Voglio scoprire se una stringa che viene separato da virgole contiene solo gli stessi valori:Come trovare i duplicati all'interno di una stringa?
test,asd,123,test
test,test,test
Qui la seconda stringa contiene solo la parola "test". Mi piacerebbe identificare queste stringhe.
Come voglio ripetere oltre 100 GB, le prestazioni sono importanti.
Quale potrebbe essere il modo più veloce per determinare un risultato boolean
se la stringa contiene un solo valore ripetutamente?
public static boolean stringHasOneValue(String string) {
String value = null;
for (split : string.split(",")) {
if (value == null) {
value = split;
} else {
if (!value.equals(split)) return false;
}
}
return true;
}
Il 'split' finirà per essere un collo di bottiglia significativo a causa di allocazioni di memoria se l'input è 100GB (specialmente in JRE7 in poi). Meglio restare con 'indexOf'. Potresti anche non voler usare 'String's, ma usare il flusso di input o la memoria mappata tramite NIO. –
È possibile che queste voci non si adattino alla memoria? Ad esempio, potrebbero esserci due valori, 50 concerti ciascuno? –