4

List<KVPair>たとえば、それぞれKVPairにがあり、String key物事を正しく行うメソッドが与えられているとします。String Value.equals()

リスト内の各要素が他の要素と同じであることをどのように確認しますか、または少なくとも1つがそうでないかどうかを確認しますか?

言い換えれば、

KVPair kvp1 = new KVPAir("key", "value");
KVPair kvp2 = new KVPAir("key", "value");

List<KVPair> l = new ArrayList<KVPair>();
l.add(kvp1);
l.add(kvp2);

私が考えることができる1つのアプローチは、最初にリストをソートし、次が前とは異なるまで繰り返すことです。

同じものを見つけるためのより簡単でクリーンな方法はありますか?

4

3 に答える 3

3

一般的な解決策は次のとおりです。

空のチェックを行うことを忘れないでください。要素をセットに初めて追加すると、常に追加されます

public static boolean isListOfSameElements(List<? extends Object> l) {
    Set<Object> set = new HashSet<Object>(l.size());
    for (Object o : l) {
        if (set.isEmpty()) {
            set.add(o);
        } else {
            if (set.add(o)) {
                return false;
            }
        }
    }
    return true;
}
于 2012-08-03T01:42:15.110 に答える
1

Java ストリームの使用:

list.stream().distinct().count() == 1
于 2016-11-21T17:07:31.377 に答える