Преобразование списков в строки и сравнение строк не очень хороший подход.Вы можете войти в горячую воду, если имена содержат пробелы, запятые или скобки.Лучше, чтобы строки были отчетливыми и работали с ними как есть.
Когда вы хотите сохранить кучу элементов, и порядок элементов не имеет значения, вам следует подумать «установить» вместо «список»,Наборы - это наборы, подобные спискам, но наборы не сохраняют порядок.
Set<String> names;
Замечательно то, что вам вообще не нужен класс Name
.Set<String>
делает именно то, что вы пытаетесь сделать с вашим пользовательским классом Name
, без необходимости писать код вообще.Вы можете добавлять имена в набор и сравнивать наборы с equals()
, все из коробки.
public static boolean sameCoins(Set<String> n1, Set<String> n2) {
return n1.equals(n2);
}
Наиболее распространенная конкретная реализация Set
- HashSet
:
Set<String> names = new HashSet<>();
Хэш-набор быстр и эффективен, но у него есть один существенный недостаток: он не хранит элементы по порядку.Если вы распечатаете элементы в хэш-наборе, они будут выглядеть случайными.Они не в том порядке, в котором вы их вставили, как список, и не в алфавитном порядке.Если это имеет значение, вы можете переключиться на LinkedHashSet
(сохраняет порядок вставки) или TreeSet
(сортирует элементы).