2017-12-19 2 views
0

に基づいて、2つの配列リストを整理:は、私は2つの配列のリストを持っていると私がする必要がある重複したエントリ

  1. それらを比較最終リスト
  2. を表示
  3. 両方のリストに優先順位に基づいて重複を削除します

私の要件は、2つのリストを比較し、重複を取り除き、優先順位に基づいて要素を配置することです。誰かがこれを助けることができますか?

SampleDTO.java

private String id; 

public String getId() { 
     return id; 
} 
public void setId(String id) { 
     this.id= id; 
} 

RemoveDuplciatesAndArrange.java

//List1 Array 
List<SampleDTO> list1 = new ArrayList<SampleDTO>(); 
SampleDTO dto1 = new SampleDTO(); 
dto1.setId("20504"); 
SampleDTO dto2 = new SampleDTO(); 
dto2.setId("20502"); 
SampleDTO dto3 = new SampleDTO(); 
dto3.setId("5608287"); 
SampleDTO dto4 = new SampleDTO(); 
dto4.setId("37666"); 
SampleDTO dto5 = new SampleDTO(); 
dto5.setId("19432"); 
SampleDTO dto6 = new SampleDTO(); 
dto6.setId("28454315"); 
SampleDTO dto7 = new SampleDTO(); 
dto7.setId("33937"); 

list1.add(dto1); 
list1.add(dto2); 
list1.add(dto3); 
list1.add(dto4); 
list1.add(dto5); 
list1.add(dto6); 
list1.add(dto7); 

//List2 Array 
List<SampleDTO> list2 = new ArrayList<SampleDTO>(); 
SampleDTO dto5 = new SampleDTO(); 
dto5.setId("37666"); 
SampleDTO dto6 = new SampleDTO(); 
dto6.setId("33937"); 
SampleDTO dto7 = new SampleDTO(); 
dto7.setId("19432"); 


list2.add(dto5); 
list2.add(dto6); 
list2.add(dto7); 

重複する項目は、次のとおりです。{"37666","33937","19432"}。あなたはリスト1

よりも優先してlist2の重複したエントリの位置を、検討している場合でも、最終的な出力は次のようになります。

{ "20504"、 "20502"、 "5608287"、 "37666( をからLIST2)」、 "22185"、 "80165777"、 "36473"、 "28454315"、 "19432( LIST2から)"、 "33937()LIST2から"}

+0

それは何を比較するのですか?リストのremoveAllメソッドを使用して重複を削除します。 https://docs.oracle.com/javase/8/docs/api/java/util/List.html#removeAll-java.util.Collection- –

答えて

0

重複の問題を解決しようとしますこれは:

if(!list1.contains(dtoX)){ 
list1.add(dtoX); 
} 
+0

これは考慮しないので、これはかなり素朴です。各要素の参照が必要です。リストがかなり長い場合、より効果的なアプローチは次のようになります。 'LinkedHashSet mySet = new LinkedHashSet(list2); mySet.addAll(list1); finalList =新しいArrayListを(MYSET) のArrayList; javaの8で ' 順序を想定しています重要ではないが... –

+0

別のエレガントなソリューション: https://stackoverflow.com/a/30867713/2204206 –

関連する問題