HashSet不会为条目提供任何有意义的顺序。该文档说:
它不保证集合的迭代顺序。特别是,它不能保证顺序会随着时间的推移保持恒定。
为了获得合理的排序,您需要使用其他Set实现,例如TreeSet或ConcurrentSkipListSet。这些SortedSet接口的实现使您可以提供一个Comparator,该Comparator指定如何对条目进行排序。就像是:
public class SortByLastName implements Comparator<FullName>{ public int compare(FullName n1, FullName n2) { return n1.getLastName().compareTo(n2.getLastName()); }}TreeSet<FullName> names = new TreeSet<FullName>(new SortByLastName());您可以改为使FullName类实现Comparable接口,但是如果您希望有时按姓氏,有时按名或其他条件排序,这可能无济于事。



