从字符串数组中查找重复值

Shi*_*rty 6 java arrays

我发现了两种从字符串数组中找到重复值的方法.

第一种方式:

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)

两种方法都是正确的.

我的问题是哪种方法最好,为什么?或者有没有其他最好的方法来找出数组的重复值?

Jon*_*ham 1

第二种方式。

对于此操作,使用 Set 的效率要高得多,因为sValueSet.contains(tempValueSet)使用支持映射(因此使用哈希码和快速查找时间)而不是完全迭代。