İki listeden öğeleri nasıl karşılaştırabilirim ve Groovy'deki farkla yeni bir liste oluşturabilir miyim?İki listeyi karşılaştırabilirim Groovy
19
A
cevap
31
Koleksiyonun kesişme noktaları, tersine çevirmek biraz zor olsa bile size yardımcı olabilir. Böyle Belki bir şey:
def collection1 = ["test", "a"]
def collection2 = ["test", "b"]
def commons = collection1.intersect(collection2)
def difference = collection1.plus(collection2)
difference.removeAll(commons)
assert ["a", "b"] == difference
44
Sadece aritmetik operatörleri kullanabilirsiniz ediyorum, ben neler olduğunu çok daha açık olduğunu düşünüyorum:
def a = ["foo", "bar", "baz", "baz"]
def b = ["foo", "qux"]
assert ["bar", "baz", "baz", "qux"] == ((a - b) + (b - a))
9
Ben OP exclusive disjunction ikisi arasında listelerin istiyor varsayalım ?
(Not : Ne önceki çözümlerin çiftleri ele!)
Eğer Groovy kendiniz kod istiyorsanız, Aşağıdakiler
def a = ['a','b','c','c','c'] // diff is [b, c, c]
def b = ['a','d','c'] // diff is [d]
// for quick comparison
assert (a.sort() == b.sort()) == false
// to get the differences, remove the intersection from both
a.intersect(b).each{a.remove(it);b.remove(it)}
assert a == ['b','c','c']
assert b == ['d']
assert (a + b) == ['b','c','c','d'] // all diffs
Bir yakaladım, listeleri kullanıyor/ints dizileri. Polymorphic yöntemi kaldır (int) vs çıkarmak (Object) yüzünden probleminiz olabilir. See here for a (untested) solution. Sen "farkı" ile ne demek söylemek gerekir
@Grab('commons-collections:commons-collections:3.2.1')
import static org.apache.commons.collections.CollectionUtils.*
def a = ['a','b','c','c','c'] // diff is [b, c, c]
def b = ['a','d','c'] // diff is [d]
assert disjunction(a, b) == ['b', 'c', 'c', 'd']
İlgili konular
- 1. Groovy - listeyi kapanış argümanlarına genişletiyor
- 2. İki lambda ifadesini nasıl karşılaştırabilirim?
- 3. Groovy iki liste birleştirir?
- 4. İki listeyi birleştir
- 5. Erlang: iki listeyi çarpın
- 6. Aynı ürünü içeren iki diziyi nasıl karşılaştırabilirim?
- 7. .NET: İki genel listeyi birleştiriyor
- 8. İki listeyi bir matrise dönüştürmek
- 9. İki listeyi MSpec ile karşılaştırma
- 10. İki tarihi vbscript/ASP ile nasıl karşılaştırabilirim? ASP klasik kullanma
- 11. vimin vimdiff ile benzer iki dosyayı nasıl karşılaştırabilirim?
- 12. Farkı bulmak için iki unix komutunun çıktısını nasıl karşılaştırabilirim?
- 13. İki tabloyu nasıl karşılaştırabilirim ve SQL'deki yinelenen satırları nasıl silebilirim?
- 14. Knexjs ile .where() işlevindeki iki sütunu nasıl karşılaştırabilirim?
- 15. İki listeyi Perl alt yordamına nasıl geçirebilirim?
- 16. İki ayrı listeyi python üstbilgileriyle csv'ye yazın.
- 17. İki genel listeyi bir araya getirme
- 18. İki listeyi bir araya getirme Prolog
- 19. Groovy
- 20. Groovy yayılma noktası operatörü
- 21. Groovy
- 22. Groovy
- 23. Groovy
- 24. groovy^operator
- 25. Her nesneyi her biriyle nasıl karşılaştırabilirim?
- 26. Dizenin bir bölümünü nasıl karşılaştırabilirim?
- 27. Argv'yi bir dizi öğe ile nasıl karşılaştırabilirim?
- 28. Groovy koleksiyonunu nasıl değiştirebilirim?
- 29. Doğru Groovy listesini GSP
- 30. Sık kullanılan öğeleri aramak için iki listeyi karşılaştırın
:
Aksine ancak Tekerleği yeniden icat yerine, sadece mevcut bir kitaplığı (örn
commons-collections
) kullanmalıdır. Sipariş önemli mi? Birden çok kopya önemli mi? – Johnİki liste arasındaki özel ayrımı mı kastediyorsunuz? yani https://en.wikipedia.org/wiki/Exclusive_or –