Java:检测 ArrayList 中的重复项?

标签 java arrays arraylist duplicates

如何检测(返回真/假)ArrayList 是否包含多个 Java 中的相同元素?

非常感谢, 特里

编辑 忘了提一下,我不是要比较“ block ”,而是比较它们的整数值。每个“ block ”都有一个 int,这就是它们不同的原因。 我通过调用名为“getNum”的方法(例如 table1[0][2].getNum();

最佳答案

最简单的:将整个集合转储到一个 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 表[][];

并且您想检测其中任何一行是否有重复项?

在这种情况下,假设 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 的添加如果您只想知道是否有任何重复。

关于Java:检测 ArrayList 中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562894/

相关文章:

java - 如何限制Java SDK小版本和主版本之间的应用程序?

php - 如果你知道 array[x]->ID,找出 array[x] 的对象 id?

java - 数组列表 - 索引超出范围异常

java - Java 中列表如何保存对象引用/值?

java - 只有第一个元素显示在从异步任务填充列表中

java - Java 中服务质量 = 2 的 Mqtt Pub-Sub

java - 防止 MigLayout 组件间隔开

java - 程序没有输出(预计 408 行),没有编译或运行时错误

javascript - 理解另一个添加数字数字的 Javascript 片段

java - 如何在 JAVA 中将 2d 字符数组打印到 5x5 游戏板中并初始化以存储 "O' s"