This question already has answers here:
Java Array, Finding Duplicates
(14个回答)
5年前关闭。
我发现了两种从字符串数组中找到重复值的方法。
第一种方式:
第二种方式:
两种方法都是正确的。
我的问题是哪种方法最好,为什么?还是有其他最佳方法来找出数组中的重复值?
输出:
(14个回答)
5年前关闭。
我发现了两种从字符串数组中找到重复值的方法。
第一种方式:
private static String FindDupValue(String[] sValueTemp) {
for (int i = 0; i < sValueTemp.length; i++) {
String sValueToCheck = sValueTemp[i];
if(sValueToCheck==null || sValueToCheck.equals(""))continue;
for (int j = 0; j < sValueTemp.length; j++) {
if(i==j)continue;
String sValueToCompare = sValueTemp[j];
if (sValueToCheck.equals(sValueToCompare)){
return sValueToCompare;
}
}
}
return "";
}
第二种方式:
private static String FindDupValueUsingSet(String[] sValueTemp) {
Set<String> sValueSet = new HashSet<String>();
for(String tempValueSet : sValueTemp) {
if (sValueSet.contains(tempValueSet))
return tempValueSet;
else
if(!tempValueSet.equals(""))
sValueSet.add(tempValueSet);
}
return "";
}
两种方法都是正确的。
我的问题是哪种方法最好,为什么?还是有其他最佳方法来找出数组中的重复值?
最佳答案
Set的好处是add operation返回true
(如果此集合尚未包含指定的元素)。
public static void main(String[] args) {
Set<String> set = new HashSet<>();
String[] stringsToTest = {"a", "b", "c", "a"};
for (String s : stringsToTest) {
boolean notInSetYet = set.add(s);
if (!notInSetYet) {
System.out.println("Duplicate: " + s);
}
}
}
输出:
09-27 16:55