首页 > 解决方案 > 在没有大量循环的情况下确定字符串数组中的值是否相等

问题描述

我需要比较字符串数组中的值,使它们永远不相等,如果相等,则必须更改它们。我为此做了一个非常糟糕的寻找,但我想知道是否有更有效的解决方案。

String[] myAnswers = new String[myWords.size()];
myAnswers[0] = "s";
myAnswers[1] = "s";
myAnswers[2] = "s";
myAnswers[3] = "s";
myAnswers[4] = "s";
myAnswers[5] = "s";

while (myAnswers[0].equals(myAnswers[1]) || myAnswers[0].equals(myAnswers[2])
        || myAnswers[0].equals(myAnswers[3]) || myAnswers[0].equals(myAnswers[4])
        || myAnswers[1].equals(myAnswers[2]) || myAnswers[1].equals(myAnswers[3])
        || myAnswers[1].equals(myAnswers[4]) || myAnswers[2].equals(myAnswers[3])
        || myAnswers[2].equals(myAnswers[4]) || myAnswers[3].equals(myAnswers[4])
        || myAnswers[5].equals(myAnswers[0]) || myAnswers[5].equals(myAnswers[1])
        || myAnswers[5].equals(myAnswers[2]) || myAnswers[5].equals(myAnswers[3])
        || myAnswers[5].equals(myAnswers[4])) {

    // Change values

}

标签: javawhile-loop

解决方案


将数组转换为 HashSet(它将删除重复项)

Set<String> mySet = new HashSet<>(Arrays.asList(arr));

接着

while(mySet.size!=1){
//change values
}

推荐阅读