Collections集合工具類中sort方法可以實現對Integer、String等進行排序,排序方法有兩種:
1. 按照默認排序方式(升序)進行排序,由於是靜態方法,調用是使用【Collections.sort(list)】即可。調用該方法排序時,list集合中存儲的數據對象必須實現Comparable接口中的【compareTo】方法,Integer、String等類中均已實現。
public static <T extends Comparable<? super T>> void sort(List<T> list) {
list.sort(null);
}
案例
public class person implements Comparable<person>{
private String name;
private int age;
public person() {
}
public person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
System.out.println(getClass());//通過反射獲取當前類的類型,即person
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
person person = (person) o;
return age == person.age &&
Objects.equals(name, person.name);//使用Objects中的equals方法,可以避免空指針異常
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(person o) {
return this.getAge()-o.getAge();//按年齡升序排序
}
}
2. 按照指定排序方式進行排序,此時在傳入需要排序的list集合之後,還需要提供Comparator類,並實現【compare】方法。
public static <T> void sort(List<T> list, Comparator<? super T> c) {
list.sort(c);
}
案例:
private static void show() {
LinkedList<String> listStr = new LinkedList<>();
listStr.add("1123");
listStr.add("122");
//方式1
/*listStr.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});*/
//方式2
Collections.sort(listStr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.parseInt(o1)-Integer.parseInt(o2);
}
});
System.out.println(listStr);
}