По моему мнению, ArrayList
не является правильным выбором для этой ситуации, вы, кажется, добавляете новый Entry
в "правильную" позицию в соответствии с методом compareTo
, определенным в классе Entry
.
Таким образом, в идеале следует использовать TreeSet
, который в основном поддерживает порядок элементов на основе compareTo
, определенного в классе Entry
, который является "порядком по умолчанию".
class Entry implements Comparable<Entry>{
private String surname;
private String initial;
private String number;
Entry(String surname, String initial, String number){
this.surname = surname;
this.number =number;
this.initial = initial;
}
@Override
public int compareTo(Entry entry){
return this.surname.compareTo(entry.surname);
}
}
И метод addEntry
должен быть просто:
private Set<Entry> entries = new TreeSet<>();
public void addEntry(String surname, String initial, String number) {
if (surname == null || initial == null || number == null)
throw new IllegalArgumentException("Please fill all the required fields, [surname,initials,number]");
else {
Entry entry=new Entry(surname,initial,number);
entries.add(entry);
}
}
И если вам действительно нужен List
, вы можете просто обернуть экземпляр TreeSet
в конструкторе ArrayList
:
List<Entry> list = new ArrayList(entries);