我发现了两种从字符串数组中找到重复值的方法.
第一种方式:
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 "";
}
Run Code Online (Sandbox Code Playgroud)
第二种方式:
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 "";
}
Run Code Online (Sandbox Code Playgroud)
两种方法都是正确的.
我的问题是哪种方法最好,为什么?或者有没有其他最好的方法来找出数组的重复值?
第二种方式。
对于此操作,使用 Set 的效率要高得多,因为sValueSet.contains(tempValueSet)使用支持映射(因此使用哈希码和快速查找时间)而不是完全迭代。