[java] 对list进行排序
我整理了一些关于在Java中对数组和列表进行排序的方法。这是给我自己的备忘录。
排列
int[] array = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8 };
Arrays.sort(array);
Integer[] array = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8 };
Arrays.sort(array, Collections.reverseOrder());
由于使用了Collections类,所以宣言为整数数组。
列出
ArrayList<Integer> al = new ArrayList<>();
al.add(2);
al.add(7);
al.add(1);
al.add(8);
al.add(2);
al.add(8);
Collections.sort(al);
ArrayList<Integer> al = new ArrayList<>();
al.add(2);
al.add(7);
al.add(1);
al.add(8);
al.add(2);
al.add(8);
Collections.sort(al, Collections.reverseOrder());
应用(用户定义类、多个值)
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Item> itemList = new ArrayList<>();
itemList.add(new Item(4, "Book", 1000));
itemList.add(new Item(2, "Bag", 3000));
itemList.add(new Item(3, "Calendar", 2000));
itemList.add(new Item(1, "pen", 200));
// id昇順ソート
itemList.sort(Comparator.comparing(Item::getId));
// id降順ソート
itemList.sort(Comparator.comparing(Item::getId).reversed());
// kind昇順ソート
itemList.sort(Comparator.comparing(Item::getKind));
// kind降順ソート
itemList.sort(Comparator.comparing(Item::getKind).reversed());
}
}
class Item {
int id;
String kind;
int price;
Item(int id, String kind, int price) {
this.id = id;
this.kind = kind;
this.price = price;
}
public int getId() {
return id;
}
public String getKind() {
return kind;
}
}