如何检查数组的元素是否都是不同的Java

时间:2015-07-01 00:46:53

标签: java arrays

他们在Java中的任何预定义函数是否可以检查array中的所有元素是否都不同?或者我是否必须从头开始编写函数才能找到它?

我在下面有一个字符串array

String[] hands = {"Zilch", "Pair", "Triple", "Straight", "Full House"};

3 个答案:

答案 0 :(得分:6)

boolean noDupes(Object[] array) {
    return Arrays.stream(array).allMatch(new HashSet<>()::add);
}

一旦发现重复就停止,而不是通过整个数组并在最后比较大小。在概念上与Misha's answer相同,但使用Java 8功能(流和方法引用)在更高级别上工作。

答案 1 :(得分:3)

如何使用HashSet并将Hashset的大小与原始数组的长度进行比较?
HashSet摆脱了重复,因此如果大小与数组长度相同,则意味着所有数组元素都不同

示例:

import java.util.Arrays;
import java.util.HashSet;

public class QuickTester {

    public static void main(String[] args) {

        String[] hands = new String[]{"Zilch", "Pair", "Triple", 
                "Straight", "Full House"};

        HashSet<String> hs = new HashSet<>(Arrays.asList(hands));

        if(hs.size() == hands.length) {
            System.out.println("All elements in array are different!");
        }
        else {
            System.out.println("Duplicates found in array!");
        }

        hands = new String[]{"Banana", "Apple", "Orange",
                "Banana"};

        hs = new HashSet<>(Arrays.asList(hands));

        if(hs.size() == hands.length) {
            System.out.println("All elements in array are different!");
        }
        else {
            System.out.println("Duplicates found in array!");
        }
    }
}

<强>输出:

All elements in array are different!
Duplicates found in array!

答案 2 :(得分:3)

不,没有这样的方法,但写一个很容易:

static boolean allUnique(String[] strings) {
    HashSet<String> set = new HashSet<>();
    for (String s : strings) {
        if (! set.add(s)) {
            return false;
        }
    }
    return true;
}

与其他答案中提供的方法不同,一旦找到副本,这将会短路。