Ho trovato due modi per trovare il valore duplicato dall'array di stringhe.Trova il valore duplicato dall'array di stringhe
Primo modo:
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 "";
}
Secondo modo:
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 "";
}
Entrambi i metodi sono corretti.
La mia domanda è quale metodo migliore e perché? O c'è qualche altro modo migliore per scoprire il valore duplicato di un array?
inserimento HashSet complessità anche nel peggiore dei casi è ancora ammortizzato 'O (1)', non 'O (n)' – LeleDumbo
E ' 'O (1)' se si conosce la dimensione del set, altrimenti è 'O (n)' –
no, anche se non si conosce la dimensione, è ** ammortizzato ** 'O (1)'. quando non si conosce la dimensione e si raggiunge il caso peggiore (numero attuale di articoli> = dimensione disponibile), l'insieme crescerà UNA VOLTA in base al fattore di carico (e alla capacità iniziale). non c'è niente che renda 'O (n)' lì. La documentazione Java lo garantisce. – LeleDumbo