Java用户定义对象的LinkedList
要在Java中对列表进行排序,可以使用sort(List<T> list)
方法。此方法可以对列表进行排序,其中所有元素都必须实现Comparable接口。
在下面的示例中,House类是用户定义的。为了使其具有可比性,它实现了Comparable接口。通过使用该sort(List<T> list)
方法,可以按升序排序。
如果要反转排序顺序,可以简单使用sort(List<T> list, Comparator<? super T> c)
。参数是Collections.reverseOrder()方法。此方法返回一个Comparator,它在实现Comparable接口的对象集合上使用自然顺序的反转。由于House类实现Comparable接口,我们可以使用此方法自动反转命令。
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
//sort self-defined object linkedlist in Java
class House implements Comparable<House> {
String type;
int size;
public House(String t, int s) {
type = t;
size = s;
}
@Override
public int compareTo(House o) {
int comparedSize = o.size;
if (this.size > comparedSize) {
return 1;
} else if (this.size == comparedSize) {
return 0;
} else {
return -1;
}
}
public String toString() {
return type;
}
}
public class SortLinkedList {
public static void main(String[] args) {
LinkedList<House> houseList = new LinkedList<House>();
houseList.add(new House("medium", 200));
houseList.add(new House("small", 100));
houseList.add(new House("large", 300));
System.out.println(houseList);
// sort in ascending order
Collections.sort(houseList);
System.out.println(houseList);
// sort in descending order
Collections.sort(houseList, Collections.reverseOrder());
System.out.println(houseList);
}
public static void printList(List l) {
for (Object o : l) {
System.out.println(o);
}
}
}
输出:
[中,小,大]
[小,中,大]
[大,中,小]