java - 检查是否列表包含给定的 int[]
问题描述
如何检查 an 是否ArrayList<int[]>
包含给定数组 [x, y]?我在 c# 中找到了相同的问题,但找不到 java 的任何答案。
目前我正在使用myList.contains(myArray)
但它总是评估为假,我假设与 C# 中的原因类似。C# 中的解决方案是使用 LINQ,在 java 中不存在。
有没有另一种方法可以做到这一点,或者我必须编写自己的子程序来提取每个列表元素的值并手动比较它们?
编辑:我已经编写了自己的子程序来执行此操作(假设每个数组都有两个元素),但更优雅的解决方案将不胜感激
private boolean contains(List<int[]> list, int[] array) {
for (int[] listItem : list) {
if (listItem[0] == array[0] &&
listItem[1] == array[1]) {
return true;
}
}
return false;
解决方案
该.contains
方法比较每个对象.equals
,正如这个答案所指出的,它只是比较数组对象的身份(即检查它们是否是同一个 Java 对象),它不比较数组的内容。
您需要做的是编写一个 for 循环,检查每个元素Arrays.equals(..)
(比较数组的内容)。例如:
boolean found = false;
for (int i = 0; i < myList.size(); i++)
if (Arrays.equals(myArray, myList.get(i)) found = true;
推荐阅读
- list - 在对象列表中,如何在 Scala 的同一个列表中减去一个对象的字段与另一个对象的相同字段?
- dart - 如何检查类型参考 - dart
- java - 在 Linux 中打开 JDK 字体问题
- c++ - 将变量/数据类型编译成可执行文件(Ghidra、C、C++、gcc)
- sql - 新线路没有被淘汰
- reactjs - 在 Framer Motion 中不起作用的子项的退出动画
- sql - 按列分组小于或等于该列中的值
- ios - 有关持久存储协调器如何工作的更多详细信息?
- excel - 制作一个可搜索的组合框来替换没有辅助列的数据验证
- php - 如何解决 PHP 中的这个 OpenSSL“EVP_DecryptFinal_ex:bad decrypt”错误?