按特定规则对对象列表进行排序?
我有这个清单:
List countryList = new ArrayList();
我想通过使用方法getCountry()
按名称对国家进行排序。 怎么能实现这个?
更新:
public class Country implements Comparable @Override public int compareTo(Object another) { // TODO Auto-generated method stub return 0; }
你能说出如何比较它们以使它按字符串排序吗? 阿根廷,奥地利,巴西等
有两种方法:
-
让
Country
实现java.util.Comparable
接口以定义Country
对象的自然顺序 ,即使对象本身“知道”它们的顺序。 然后,您可以使用Collections.sort(List)
或只是从List
切换到像TreeSet
这样的SortedSet
实现(如果您不需要重复项,则Set
Drop duplicate duplicates) -
编写一个
java.util.Comparator
来定义强加的排序,并调用Collections.sort(List, Comparator)
或(再次丢失重复项)去寻找new TreeSet(Comparator)
。
实现这两个中的一个足以解决您的问题 – 可以合并Comparable
和Comparator
:使用Comparator
将覆盖Comparable
定义的任何自然顺序。
您可以调用Collections.sort(),提供比较getCountry()的Comparator。
使用内置排序方法并确保在Country上实现可比较