繁体   English   中英

在二维整数数组中搜索重复的条目

[英]Searching for repeated entries in a 2d integer array

我有一个二维整数数组,每个索引中都有3个数字。

例如:

   examplearray=new int[][]
   {

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

   };

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

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

最好的方法是创建一个表示外部数组成员的键类。 hackies /最快的方法是使用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);
}

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

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] );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM