文字列配列から重複する値を見つける方法が2つ見つかりました。文字列配列から重複する値を見つける
最初の方法:
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 "";
}
どちらの方法が適切です。
私の質問は、どの1つの最良の方法で、なぜですか?または、重複した値から配列を見つける他の最良の方法はありますか?
HashSetの挿入の複雑さは、まだそうでない場合は(1) 'あなたがセットのサイズを知っていれば、それは' Oの ' – LeleDumbo
' O(1) 'ではなく' O(n)を償却されますそれは 'O(n)' –
です。あなたがサイズを知らなくても、それは**償却されます** 'O(1)'です。サイズがわからず、最悪の場合(現在のアイテム数=使用可能なサイズ)に達すると、セットは負荷率(および初期容量)に基づいて1倍になります。そこには「O(n)」はない。 Javaのドキュメントで保証されています。 – LeleDumbo