Ich fand einen doppelten Weg, den doppelten Wert vom Zeichenfolgenarray zu finden.Doppelten Wert von Zeichenfolgenarray finden
Erster Weg:
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 "";
}
Zweiter Weg:
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 "";
}
Beide Methoden richtig sind.
Meine Frage ist, welche eine beste Methode und warum? Oder gibt es eine andere Möglichkeit, den doppelten Wert eines Arrays herauszufinden?
HashSet Insertion Komplexität auch im schlimmsten Fall abgeschrieben noch 'O (1)', nicht 'O (n)' – LeleDumbo
Es ist 'O (1)', wenn Sie wissen, die Größe des Satzes, sonst es ist 'O (n)' –
nein, selbst wenn du die Größe nicht kennst, ist es ** amortized ** 'O (1)'. Wenn Sie die Größe nicht kennen und der Worst-Case-Wert erreicht wird (aktuelle Anzahl der Artikel> = verfügbare Größe), wird der Satz basierend auf dem Ladefaktor (und der Anfangskapazität) EINMAL wachsen. da ist nichts, was 'O (n)' da ist. Die Java-Dokumentation garantiert dies. – LeleDumbo