È consigliabile non modificare mai il contenuto di un Collection
passato come parametro?
Voglio orgSet
per avere solo parole. Ma, a volte ci sono un stringhe di carattere (come punti interrogativi, virgole, ecc.) Che voglio rimuovere dal set di parole. Questi non sono i metodi completi, ma questo è il mio punto:
public static Set<String> removeSyntax_Foo(Set<String> orgSet) {
Set<String> tmpSet = new HashSet();
for(String s : orgSet) {
if(s.length()!=1) { tmpSet.add(s); }
if(Character.UnicodeBlock.of(s.charAt(0)) == Character.UnicodeBlock.GENERAL_PUNCTUATION) { continue; }
tmpSet.add(s);
}
return tmpSet;
}
public static void removeSyntax_Bar(Set<String> orgSet) {
Set<String> tmpSet = new HashSet();
tmpSet.addAll(orgSet);
orgSet.clear();
for(String s : tmpSet) {
if(s.length()!=1) { orgSet.add(s); }
if(Character.UnicodeBlock.of(s.charAt(0)) == Character.UnicodeBlock.GENERAL_PUNCTUATION) { continue; }
orgSet.add(s);
}
}
removeSyntax_Foo()
ha il potenziale per una perdita di memoria incurante. In realtà ho una lista di metodi statici che uso per ripulire il mio Set
di parole. Se ognuno di questi metodi crea una nuova collezione ... Tuttavia, ritengo che questa sia la soluzione corretta da usare.
removeSyntax_Bar()
mescola il contenuto della Set
dell'invocatore che potrebbe essere una grande sorpresa per l'invocatore. Non dovresti farlo, giusto?
È removeSyntax_Foo()
o removeSyntax_Bar()
best practice?