在2d整数数组中搜索重复的条目

时间:2014-03-03 02:38:47

标签: java arrays

我有一个2d整数数组,每个索引都有3个数字。

例如:

   examplearray=new int[][]
   {

        {0, 0, 0},
        {0, 1, 0},
        {0, 0, 1},
        {1, 0, 1},

   };

我想知道每个索引中的前两个数字是否与任何其他索引的前两个数字匹配。

在此示例中,{0,0,0}{0,0,1}都具有相同的前两个数字。我想创建一个可以表明这一点的代码。

2 个答案:

答案 0 :(得分:2)

最好的方法是创建一个表示外部数组成员的键类。最黑/最快的方法是使用long来填充前两个数字:

Set<Long> keys = new HashSet<>();
for (int[] innerArray : examplearray) {
  long key = ((long) innerArray[0] << 32) | innerArray[1];
  if (keys.contains(key)) {
    System.out.println(Arrays.toString(innerArray) + " has duplicate entries");
  }
  keys.add(key);
}

答案 1 :(得分:0)

如果您的前两位数字与另一个条目相同,则可以尝试此操作

ArrayList<String> entries = new ArrayList<String>
for (int i = 0; i < examplearray.length; i++) {
  if (entries.indexOf( examplearray[i][0] + " " + examplearray[i][1] )) {
    // here is a duplicate
  } else {
    entries.add( examplearray[i][0] + " " + examplearray[i][1] );
  }
}