java - 数组-数组按值索引

标签 java arrays indexing compare

我有以下变量:

byte[][] bytes;
byte[] value;

有没有一种聪明的方法可以找到 valuebytes 中第一个匹配条目的索引?

valuebytes 中的条目不是同一对象,它只是具有相同的内容。

当然你可以这样做:

int idx = -1;
for(int i=0;i<bytes.length;i++) {
   if(Arrays.equals(value, bytes[i])) {
      idx = i;
      break;
   }
}
// idx is index or -1 if not found

我只是想知道是否可以变得更容易。

最佳答案

因为你只是在谈论字节数组......不。

示例代码中的内容就是执行此操作的方法;你必须逐字节地比较它们。这很可能是完全可以接受的。

“让事情变得更容易”的唯一方法是将字节数组封装在一个对象中,该对象提供了一种使用独特的哈希算法来比较它们的方法(请参阅:equals()hashcode() )。即使这样,您也需要考虑计算哈希的开销,以及确保算法唯一性的难度/成本。如果您希望进行多次比较并且确实需要这种优化,则可以考虑使对象不可变并在对象创建时计算哈希值;你不太可能这样做:)

关于java - 数组-数组按值索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128742/

相关文章:

java - 查找尝试连接到 ServerSocket 的程序的 IP

java - 如何在 Vaadin 中映射表项

javascript - .Push 超过两列的多维数组

ruby - 替换索引与给定索引不匹配的数组中的元素

java - Swing JButton 事件

java - SBT 可以使用 `sbt test` 或类似的代码执行编译测试吗?

php - 如何比较内部数组键和值并在 PHP 中相应地设置变量的值?

javascript - 在循环中替换数组中的值

javascript - 从字符串数组映射索引

mysql - 为什么 MySQL 查询使用连接缓冲区?