Java:如何对自定义类型ArrayList进行排序

我有一个自定义类型Position(x,y,z) ,现在我创建一个ArrayList ,我想按z的值排序这个数组,从小到大,我怎么能用Collections.sort做到这一点还是有其他有效的排序方法?

当我尝试使用时

 public class PositionComparator implements Comparator { @Override public int compare(Position o1, Position o2) { // TODO Auto-generated method stub return o1.height().compareTo(o2.height()); } } 

得到一个错误

 Cannot invoke compareTo(double) on the primitive type double 

尝试

 Collections.sort(SortList, new Comparator(){ public int compare(Position p1, Position p2) { return p1.z- p2.z; } }); 
 Collections.sort 

例如

 class User { String name; String age; public User(String name, String age) { this.name = name; this.age = age; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } } import java.util.Comparator; public class ComparatorUser implements Comparator { public int compare(Object arg0, Object arg1) { User user0 = (User) arg0; User user1 = (User) arg1; int flag = user0.getAge().compareTo(user1.getAge()); if (flag == 0) { return user0.getName().compareTo(user1.getName()); } else { return flag; } } } import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortTest { public static void main(String[] args) { List userlist = new ArrayList(); userlist.add(new User("dd", "4")); userlist.add(new User("aa", "1")); userlist.add(new User("ee", "5")); userlist.add(new User("bb", "2")); userlist.add(new User("ff", "5")); userlist.add(new User("cc", "3")); userlist.add(new User("gg", "6")); ComparatorUser comparator = new ComparatorUser(); Collections.sort(userlist, comparator); for (int i = 0; i < userlist.size(); i++) { User user_temp = (User) userlist.get(i); System.out.println(user_temp.getAge() + "," + user_temp.getName()); } } } 

我使用这个(只是我剪切和过去但同样的想法的一个例子)降序排序:

 @Override public int compare(Member m1, Member m2) { double fit1 = m1.getFitness() ; double fit2 = m2.getFitness() ; if (fit2>fit1) return 1; else if (fit2 

您需要实现Comparator ,它将比较z属性的值。