我如何去检测(返回true / false)ArrayList是否包含Java中多个相同元素?
非常感谢,特里
编辑 忘记提及我不是要相互比较“块”,而是要比较它们的整数值。每个“块”都有一个整数,这就是它们与众不同的原因。我通过调用名为“ getNum”的方法(例如table1 [0] [2] .getNum();)来找到特定Block的int。
最简单:将整个集合转储到Set中(使用Set(Collection)构造函数或Set.addAll),然后查看Set是否具有与ArrayList相同的大小。
List<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);
if(set.size() < list.size()){
/* There are duplicates */
}
更新:如果我正确地理解了你的问题,那么你将获得二维的Block数组,如
块表[] [];
并且你想检测其中是否有重复的行?
在那种情况下,假设Block正确实现了“ equals”和“ hashCode”,我可以执行以下操作:
for (Block[] row : table) {
Set set = new HashSet<Block>();
for (Block cell : row) {
set.add(cell);
}
if (set.size() < 6) { //has duplicate
}
}
我不确定语法是否100%,因此将其编写为可能更安全
for (int i = 0; i < 6; i++) {
Set set = new HashSet<Block>();
for (int j = 0; j < 6; j++)
set.add(table[i][j]);
...
Set.add
如果要添加的项已在集合中,则返回boolean false,因此,false
如果你只想知道是否存在重复项,则你甚至可以短路并打包返回的任何添加项。
我需要编写一个逻辑来检查一个列表是否有任何重复项,如果有,它会删除它们,并返回一个新的列表,其中包含没有重复/删除的项。下面是我尝试过但没有成功的方法。 Customer.java: 以下是添加后的响应列表: 在上面列出两个具有相同细节的对象的情况下,(即)["id": 123]是重复的。我在所有对象中添加了String(),equals(),hashcode(),并将其传递给hashSet 但我
问题内容: 我在数据库中存储了一组依赖项。我正在寻找直接或间接依赖于当前对象的所有对象。由于对象可以依赖零个或多个其他对象,因此完全可以合理地认为对象1被对象9两次依赖(9依赖于4和5,这两个都依赖于1)。我想获取不依赖复制的所有依赖于当前对象的对象的列表。 如果存在循环,这将变得更加复杂。没有循环,一个人可以使用DISTINCT,尽管多次经过长链仅在末尾剔除它们仍然是一个问题。但是,对于循环,重
问题内容: 谢谢Marko。我重写代码。尝试使其简单。这次它可以真正编译。但它只能删除彼此相邻的重复项。例如,如果我输入1 2 3 3 4 4 5 1,则输出为1 2 3 4 5 1。最后它无法拾取重复项。(顺便说一句:本网站的新内容,如果使任何显示混乱我的歉意) 这是新的代码: 问题答案: 要回答“删除java arraylist中的重复项”问题: 只需将所有元素放到中,就可以完成。 -要么-
我想知道如何实现以下操作:我有两个arraylists,其中的值相互关联。也就是说,同一索引上的arraylists的元素彼此相关。例如:ArrayList1(String ArrayList)=[id1,id2,id3,id2,id2,id1]。ArrayList2(整数ArrayList)=[2,3,2,5,6,3]。 我想创建2个新的arraylists与重复的值不再存在。在上面的例子中,新
ArrayList和LinkedList有什么区别?我在纽伯顿看了一段视频,但我还是很困惑。请用简单的英语回答。请不要使用任何高级代码。
我目前正在android studio中开发一个应用程序,我有一个用于存储图像URL的字符串数组列表。在for循环中,我每次都会向ArrayList添加一个值,但在for循环之后,ArrayList似乎会重新设置自己。 谁能给我解释一下为什么它会自动复位?