他们在Java
中的任何预定义函数是否可以检查array
中的所有元素是否都不同?或者我是否必须从头开始编写函数才能找到它?
我在下面有一个字符串array
:
String[] hands = {"Zilch", "Pair", "Triple", "Straight", "Full House"};
答案 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;
}
与其他答案中提供的方法不同,一旦找到副本,这将会短路。