嗨我有兩個數組列表列表l1和列表l2,名稱,年齡,性別,uniqID,標記是列表中的數據。我想加入l1和l2而沒有duplicates.uniqID對每個學生都是唯一的。我一直在循環所有的元素,並比較每一個元素。但是我的清單將有大約20k項目,因此循環花費了太多時間。我試過 all the answers from this post沒有爲我工作。有什麼建議麼。?合併模型元素ArrayList沒有重複
0
A
回答
1
簡單的例子:
public class Person{
int id;
String name;
//fields, getter, setter, constructor omited....
@Override
public boolean equals(Object o){
if (!(o instanceof Person)){
//implicit null check
return false;
}
return this.id==((Person)o).id;
}
@Override
public int hashCode(){
return this.id;
}
}
類Person
確實現在實現equals和hashCode。 equals
由java用來決定對象是否是另一個對象的重複。 hashCode
本身不是必需的,但建議一起覆蓋hashCode
和equals
。
如果這兩種方法來實現,你可以簡單地使用在Java中積累的方法和數據結構:
隨着名單:
List<Person> listA = new ArrayList<>();
List<Person> listB = new ArrayList<>();
// filling the lists omitted
List<Person> mergedList=new ArrayList<>();
mergedList.addAll(listA);
mergedList.removeAll(listB);
mergedList.addAll(listB);
或用套:
List<Person> listA = new ArrayList<>();
List<Person> listB = new ArrayList<>();
// filling the lists omitted
Set<Person> mergedSet=new HashSet<>();
mergedSet.addAll(listA);
mergedSet.addAll(listB);
0
你可以結合這兩個arraylist並將其傳遞給HashSet對象 由於Set不包含可以執行的重複項
ArrayList<String> a=new ArrayList<String>();
ArrayList<String> b=new ArrayList<String>();
b.addAll(a);
如果您想保留元素的順序使用LinkedHashSet
LinkedHashSet<String> result=new LinkedHashSet<String>(b);
+0
將這兩個列表結合起來並將它們添加到'Set'中會比我們需要更多的工作。你可以調用'addAll'這兩個列表到(空)Set。此外,問題是自定義類中沒有「equals」和「hashCode」,這會阻止「Set」正常工作。 – samjaf
相關問題
- 1. 沒有重複元素的列表元素的所有組合
- 2. 如何合併兩個沒有重複的ArrayList?
- 3. ArrayList元素沒有刪除
- 4. 刪除ArrayList中的重複元素Java
- 5. ArrayList中的重複元素(java)
- 6. 矢量得到沒有重複元素
- 7. 在arraylist中查找重複元素並顯示
- 8. 集合,沒有重複,並在Java中
- 9. 合併重複單元格?
- 10. 結合Spark模式沒有重複?
- 11. XML模式重複元素
- 12. 帶有重複/重複元素的Python「集合」
- 13. arraylist複製的元素
- 14. 與Java中的Arraylist沒有重複
- 15. 重複元素
- 16. :元素重複
- 17. XSLT:組合元素不重複
- 18. Python代碼結合重複元素
- 19. 合併XML文件,同時忽略重複元素
- 20. JavaScript中的合併排序返回重複的元素
- 21. 組合兩個xml文件並刪除重複的元素
- 22. 複合JavaScript元素
- 23. 從集合ArrayList中返回一個元素,其中每個集合具有不同的元素類型
- 24. ArrayList獲取所有元素
- 25. 合併重複的行單元格
- 26. n元素組合選擇r元素不重複(Objective-c)
- 27. 如何使用重複元素在多行中組合元素
- 28. 驗證重複元素組與模式
- 29. jquery合併元素
- 30. 合併XML元素
你覆蓋'equals'在你的「人」類?刪除像這篇文章http://stackoverflow.com/a/14361428/966852中建議的重複項應該在執行「equals」時工作。 – samjaf
@Shanu:你可以使用'HashSet'或任何實現'set'接口的集合。 – AndiGeeky