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複数のプロセッサが使用可能な場合、 を使用するとパフォーマンスが向上する可能性があります。

于 2015-01-05T15:58:26.330 に答える
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 に答える
1

単純なループでリストを繰り返し処理し、forすべての値を特定の値 (1 など) と比較することができます。リストの 1 つの値が特定の値と等しくない場合は、ブール値を false に設定してください。

于 2012-07-19T20:41:00.520 に答える
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

驚いたことに、これまでに提案されたすべての解決策は、明らかに間違っているか、微妙なバグが含まれているか、より効率的である可能性があります。

リストの種類に関係なく、リストに null 要素が含まれている場合でも高速に動作するソリューションを次に示します。

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 に答える