嗨我有两个数组列表列表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中的重复元素(java)
- 4. 集合,没有重复,并在Java中
- 5. 合并重复单元格?
- 6. 结合Spark模式没有重复?
- 7. 带有重复/重复元素的Python“集合”
- 8. arraylist复制的元素
- 9. 重复元素
- 10. XSLT:组合元素不重复
- 11. Python代码结合重复元素
- 12. JavaScript中的合并排序返回重复的元素
- 13. ArrayList获取所有元素
- 14. 从集合ArrayList中返回一个元素,其中每个集合具有不同的元素类型
- 15. 合并重复的行单元格
- 16. 如何使用重复元素在多行中组合元素
- 17. ArrayList =查找复合或素数
- 18. 在同一个集合中复制arraylist的元素java
- 19. 验证重复元素组与模式
- 20. jquery合并元素
- 21. Team Foundation Server:复制/合并模型
- 22. 合并ArrayList中的两个或多个元素
- 23. print arraylist元素?
- 24. 重复gridview元素.....!
- 25. 重复的元素
- 26. insertAfter重复元素
- 27. WPF重复元素
- 28. 连接行并丢弃连续的重复或重复元素
- 29. ArrayList重复元素在列表视图中显示
- 30. 在arraylist中查找并显示元素
你覆盖'equals'在你的“人”类?删除像这篇文章http://stackoverflow.com/a/14361428/966852中建议的重复项应该在执行“equals”时工作。 – samjaf
@Shanu:你可以使用'HashSet'或任何实现'set'接口的集合。 – AndiGeeky