如何使用Collection.sort()对集合进行排序

时间:2013-01-27 01:36:45

标签: java

我正在编写一个存储ArrayList PersonPerson个对象的程序(输入来自文本文件)。

这是Person类的代码,我将从中创建import java.io.Serializable; public class Person implements Comparable<Person>, Serializable { private String firstName; private String lastName; private int age; public Person(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName.toUpperCase(); this.age = age; } public int getAge() { return age; } public String getName() { return firstName; } /** * @return a String of the details of a person in the format: * Name: <firstName> <lastName> Age: <age> */ public String toString() { return "Name: " + firstName + "" + lastName + "\t\t" + "Age: " + age; } /** * Compare the age of the current instance of Person to another age of the specified Person * @return negative number this < p * @return 0 if this == p * @return positive number if this > p */ public int compareTo(Person p) { return ((Integer)this.getAge()).compareTo(p.getAge()); } 个对象:

Comparable

我创建了一个public interface Comparable<T> { public int compareTo(T o); } 界面:

Collection

以下是名为ArrayList的类的代码,它将创建一个Person来存储import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; import java.util.Iterator; public class Collection { private ArrayList<Person> people; public Collection() { people = new ArrayList<Person>(); } public void readFromFile(String filename) { // code that will get input to assign values to fields to a Person Person newPerson = new Person(firstNameToken, lastNameToken, ageToken); } /** * Prints the details of each person held in the people ArrayList */ public void printDetails() { Iterator<Person> it = people.iterator(); while(it.hasNext()) { Person p = it.next(); System.out.println(p.toString()); } } public static void main(String [] args) throws FileNotFoundException { Collection c = new Collection(); // check //for(Person person : c.people) //{ // System.out.println(person); //} Collections.sort(c.people); } } 个对象,我省略了部分代码,因为它很长:

{{1}}

但是我收到此错误,排序不起作用:

  

线程“main”中的异常java.lang.Error:未解决的编译问题:绑定不匹配:类型集合的泛型方法sort(List)不适用于参数(ArrayList)。推断类型Person不是有界参数&gt;

的有效替代

有谁知道为什么?我正在疯狂地寻找谷歌的解决方案,我看不出我错过了什么。我已经实现了类似的..

1 个答案:

答案 0 :(得分:6)

  

我创建了一个Comparable接口:public interface Comparable {public int compareTo(T o); }

您不应该创建自己的界面。使用java.lang.Comparable<T>,即Collections.sort()方法希望您的对象实现的方法