SORU
2 Temmuz 2009, PERŞEMBE


Eğer iki farklı listeler tam olarak aynı öğeleri içeren bulmak için basit bir yolu?

Eğer iki liste tam olarak aynı öğeleri içeren, standart Java kütüphanelerinde bulmak için en kolay yolu nedir?

Eğer iki liste aynı örnek ya da değil eğer önemli olmamalı, ve eğer bu Listeler tür parametresi farklı ise önemli olmamalı.

örneğin

List list1
List<String> list2; 
// ... construct etc

list1.add("A");
list2.add("A"); 
// the function, given these two lists, should return true

Muhtemelen bir şey biliyorum yüzüme bakan yok :-)

< / ^ hr .

EDIT: açıklığa kavuşturmak İçin, element aynı element ve numarasını arıyordum.

< / ^ hr .

EDİT: aramaya göremedim açık cevap belirttiğin için Teşekkürler :-)

Tüm cevaplar şimdiye kadar verilen doğru olsa da, bazı en iyi yuvarlanır kabul etmeden önce cevap için bir süre bekleyeceğim yani diğerlerine göre daha doğru.

CEVAP
2 Temmuz 2009, PERŞEMBE


Eğer sipariş önemsiyorsan, sadece equals yöntemi:

list1.equals(list2)

Javadoc:

Belirtilen nesne ile karşılaştırır eşitlik için bu liste. True değerini döndürür eğer belirtilen nesne ise sadece ve ayrıca bir liste, her iki listede de aynı boyutu ve karşılık gelen çiftleri iki liste öğeleri eşittir. (İki eleman e1 ve e2 ise eşittir (e1==null ? e2==null : e1.(e2) eşittir).) Diğer bir deyişle, iki listeleri onlar ise eşit olarak tanımlanır aynı aynı unsurları içerir sipariş. Bu tanım sağlar doğru yöntem işe eşittir farklı uygulamalar arasında Liste arayüzü.

Eğer sipariş bağımsız kontrol etmek isterseniz, Ayarlar için tüm öğeleri kopyalamak ve sonuç Kümeleri eşittir kullanabilirsiniz:

Set<Object> set1 = new HashSet<Object>();
set1.addAll(list1);
Set<Object> set2 = new HashSet<Object>();
set2.addAll(list2);
set1.equals(set2)

Bu yaklaşım ile bir uyarı çiftleri tam olarak kontrol etmeyecek. örn: list1. ["A", "B", "A"] ve list2. ["A", "B", "B"] Set yaklaşım olur ki onlar eşit.

Eğer istemiyorsan bu tedavi edilecek gibi eşit ama düşünmüyorsun sipariş edebilirsiniz ya da her iki tür listeler daha önce karşılaştırarak ya da sen-ebil yapmak aynı şey olarak Ayarla yaklaşım ama bir Multiset (öyle bir standart kitaplıkları, ama Google Guava iyi biri.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008