首页 > 解决方案 > 将字符串数组与数组列表进行比较

问题描述

我目前有一个字符串数组

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
}

我想知道是否有更简单/更漂亮的方式来做这件事,似乎有点多余。

标签: java

解决方案


仅当元素相等且顺序相同时,数组和列表才被视为彼此相等。

要将对象数组与同一对象的列表进行比较,您可以使用Arrays#compare方法执行以下操作。不同的版本有不同的能力。此示例使用Strings并执行不区分大小写的比较。它还利用了List.toArrayJDK 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]

推荐阅读