java - 将字符串数组与数组列表进行比较
问题描述
我目前有一个字符串数组
String[] properSequence = ability.getSequence();
我想将它与 ArrayList 进行比较
ArrayList<String> sequence
截至目前,我正在做,
boolean matchesSequence = true;
String[] properSequence = ability.getSequence();
int index = 0;
for(String s : sequence) {
String s1 = properSequence[index];
if(!s1.equalsIgnoreCase(s)) {
matchesSequence = false;
break;
}
index++;
}
if(matchesSequence) {
// Matches, code
}
我想知道是否有更简单/更漂亮的方式来做这件事,似乎有点多余。
解决方案
仅当元素相等且顺序相同时,数组和列表才被视为彼此相等。
要将对象数组与同一对象的列表进行比较,您可以使用Arrays#compare方法执行以下操作。不同的版本有不同的能力。此示例使用Strings
并执行不区分大小写的比较。它还利用了List.toArray
JDK 11 中引入的
List<String> list = List.of("A", "B", "C");
String[] array1 = { "a", "b", "c" };
String[] array2 = { "a", "c", "b" };
for (String[] array : new String[][] { array1, array2 }) {
if (Arrays.compare(array, list.toArray(String[]::new),
String.CASE_INSENSITIVE_ORDER) == 0) {
System.out.printf("%s equals %s%n",
Arrays.toString(array), list);
} else {
System.out.printf("%s does not equal %s%n",
Arrays.toString(array), list);
}
}
印刷
[a, b, c] equals [A, B, C]
[a, c, b] does not equal [A, B, C]
推荐阅读
- mongoose - 在猫鼬中排序抛出无效的排序值
- jmeter - EPP 应用程序的性能测试脚本
- settings - Xcode 13 - 关闭自动导入功能
- pandas - 使用 pandas 数据框进行旋转和转置
- sql - SQL 查询 - 跟踪中断序列中的哪些行彼此相关
- c++ - 从 std::vector 派生 - 我做错了什么?
- c# - 使用隐藏第二张图像的最小成本函数去除异常值
- flutter - 如何在 Flutter 中构建叠加的 UI?
- wordpress - 导师 LMS 如何从课程 ID 或帖子 ID 获取链接产品
- node.js - TypeError:无法读取 null 的属性“mimetype”