1

我想知道了解集合的所有值是否与特定值匹配的最佳方法。

List<Integer> listOfStrings = new ArrayList<Integer>();

我只想知道“listOfStrings”中的所有条目是否都匹配特定值;例如,没有不是“1”的整数。

我需要最快的解决方案。我有一个解决方案,但它非常初级。

4

7 回答 7

4

循环遍历它:

public boolean checkAll(ArrayList<String> list) {
    for(int i = 0; i < listOfStrings.size(); i++) {
        String candidate = listOfStrings.get(i);
        if(candidate == null || !candidate.equals("1")) {
            return false;
        }
    }
    return true;
}
于 2012-07-19T20:42:24.053 回答
2

在 Java 8 中,您可以使用allMatch流的方法来实现这一点。

public boolean allOnes(Collection<Integer> values) {
    return values.parallelStream().allMatch(i -> i == 1);
}

parallelStream如果有多个可用处理器,使用 a可能会产生更好的性能。

于 2015-01-05T15:58:26.330 回答
1

你可以用一个简单的循环遍历你的列表for,并将每个值与你的某个值(比如 1)进行比较。如果列表中的一个值不等于某个值,只需将布尔值设置为 false。

于 2012-07-19T20:41:00.520 回答
1

就这样做

public boolean isFilled(String value, ArrayList<String> list)
{
    for(int i = 0; i < list.size(); i++)
    {
        String toTest = list.get(i);
        if(toTest == null || !toTest.equals(value)) {
            return false;
        }
    }

    return true;
}
于 2012-07-19T20:45:47.333 回答
0
 boolean x=true;
     ArrayList<Integer> listOfInts = new ArrayList<Integer>   (Arrays.asList(5,3,1,2,9,5,0,7));
    Integer target = 1;
    for (int i = 0; i < listOfInts.size(); i++)
    {
        if (listOfInts.get(i).equals(target)) // nothing
        {

        } else {
            x = false;
            break;// exits loop right after this
        }
    }
    System.out.println(x);
于 2012-07-19T20:52:40.060 回答
-1

令我惊讶的是,到目前为止提出的所有解决方案都是完全错误的,或者包含一个微妙的错误,或者可能更有效。

这是一个无论列表类型如何都可以快速运行的解决方案,即使列表包含空元素:

public boolean listIsFilledWith(List<Integer> integers, int i) {
    Integer value = i; // transform the int into an Integer only once
    for (Integer element : integers) { // iterate using an iterator, to avoid performance problems with linked lists
        if (!value.equals(element)) { // value is not null, but element can be. Don't compare objects with == or !=
            return false; // return early
        }
    }
    return true;
}
于 2012-07-19T21:07:22.920 回答
-3

使用.contains()告诉您该值是否存在于列表中的方法:http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html#contains%28java.lang.Object% 29

myList.contains(1);

注意:它使用.equals()包含对象的方法(它可能对您未来的开发有用)。

嗨,M。

于 2012-07-19T20:43:09.563 回答