Таким образом, вы спрашивали о маркировке (и расширением сортировки), но относятся к однозначной идентификации - вот ответ на оба :)
Для сортировки
программы реальной жизни дело с этим каждый день, просто обеспечить ваш сравнимый код по умолчанию сортирует 2 ATTR ibutes
- LastName
- FirstName
Если сравнивать в таком порядке, вы должны закончить с:
XavierAllen
JayReese
BillySmith
ClaraSmith
JohnSmith
Для сравнения нескольких атрибутов, я отсылаю вас к этому StackOverflow тема, в которой показано, как выполнять одиночные и множественные сравнения в объекте Person с одинаковыми именами полей;)
How to compare objects by multiple fields
Для Unique Referance
Кроме того, если вы были обеспокоены однозначно идентифицирующий Person вне простой сортировки сравнения, то вы бы добавить поле Int (или GUID, или независимо от вашего аромат), который сохранил бы уникальную ценность
В принципе то же самое, что и в базе данных PK - вы никогда не использовали бы имя человека как ПК в базе данных, поэтому ваш человек в идеале должен иметь такое же свойство.
Если вы хотите добавить этот ПК к вашему ToString(), а затем пойти на это
import java.util.*;
public class Person implements Comparable<Person> {
private int personID;
private String firstName;
private String lastName;
public Person(String firstName, String lastName, int personID) {
this.firstName = firstName;
this.lastName = lastName;
this.personID = personID;
}
public int getID(){
return this.personID;
}
public String toString() {
return this.personID + ": " + this.lastName + ", " + this.firstName;
}
}
@Mshnik сделал опубликовать метод динамического добавления ПК, но вы будете намного лучше проверять коллекцию Person или некоторые переменную высокого уровня, чтобы найти последний идентификатор personID и перейти оттуда - иначе это динамическое значение может использоваться только в самых ограниченных контекстах, и вы можете просто использовать индекс, расположенный в папке Person, который вы извлекаете из
'Person' необходимо будет провести уникальное значение индекса, которое может быть sufixed к выходу. Вам также нужен какой-то поиск, который может управлять «следующим значением», поэтому, если бы существовал другой «Reese», он не стал бы «Reese3», какой-то «Карт» должен сделать трюк. Вам также может потребоваться какой-то способ определить, имеет ли идентификатор 'Person' уже назначенный ему идентификатор unquie, поэтому, если вы запускаете тот же экземпляр' Person' в 'List', вы не увеличиваете свой идентификатор – MadProgrammer