※範例一
SortedSet<Date> set = new TreeSet<Date>(); set.add(new Date(102, 1, 1)); set.add(new Date()); set.add(new Date(103, 1, 1)); set.add(new Date(100, 1, 1)); set.add(new Date(101, 1, 1)); System.out.println("第一筆=" + set.first()); System.out.println("最後一筆=" + set.last()); System.out.println("排序結果=" + set);
※範例二
List<Date> list = new ArrayList<Date>(); list.add(new Date(102, 1, 1)); list.add(new Date()); list.add(new Date(103, 1, 1)); list.add(new Date(100, 1, 1)); list.add(new Date(101, 1, 1)); System.out.println("排序前=" + list); Collections.sort(list, new Comparator<Date>() { @Override public int compare(Date o1, Date o2) { if (o1.before(o2)) { return 1; } else if (o1.after(o2)) { return -1; } else { return 0; } } }); System.out.println("排序後=" + list);※如果假資料是陣列,可用Arrays.sort
※倒序正序可以將-1和1互換
※範例三
class Student { private String name; private Date learningDate; private Integer learningNo; //setter/getter } List<Student> list = new ArrayList<Student>(); Student stu1 = new Student(); stu1.setName("circle"); stu1.setLearningDate(new Date(101, 1, 1)); stu1.setLearningNo(10); Student stu2 = new Student(); stu2.setName("bruce"); stu2.setLearningDate(new Date(100, 2, 2)); stu2.setLearningNo(20); Student stu3 = new Student(); stu3.setName("apple"); stu3.setLearningDate(new Date(102, 3, 3)); stu3.setLearningNo(30); list.add(stu1); list.add(stu2); list.add(stu3); System.out.println("list1="); for (Student stu : list) { System.out.println(stu.getName()); System.out.println(stu.getLearningDate()); System.out.println(stu.getLearningNo()); } Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { if (o1.getLearningDate().before(o2.getLearningDate())) { return -1; } else if (o1.getLearningDate().after(o2.getLearningDate())) { return 1; } else { return 0; } } }); System.out.println("\nlist2="); for (Student stu : list) { System.out.println(stu.getName()); System.out.println(stu.getLearningDate()); System.out.println(stu.getLearningNo()); }類似從資料庫撈出來的效果
※範例四
class Student { private String name; private Date learningDate; private Integer learningNo; //setter/getter } class StudentComparator implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { if (o1.getLearningDate().before(o2.getLearningDate())) { return 1; } else if (o1.getLearningDate().after(o2.getLearningDate())) { return -1; } else { return 0; } } } List<Student> list = new ArrayList<Student>(); Student stu1 = new Student(); stu1.setName("circle"); stu1.setLearningDate(new Date(101, 1, 1)); stu1.setLearningNo(10); Student stu2 = new Student(); stu2.setName("bruce"); stu2.setLearningDate(new Date(100, 2, 2)); stu2.setLearningNo(20); Student stu3 = new Student(); stu3.setName("apple"); stu3.setLearningDate(new Date(102, 3, 3)); stu3.setLearningNo(30); list.add(stu1); list.add(stu2); list.add(stu3); System.out.println("list1="); for (Student stu : list) { System.out.println(stu.getName()); System.out.println(stu.getLearningDate()); System.out.println(stu.getLearningNo()); } Collections.sort(list, new StudentComparator()); System.out.println("\nlist2="); for (Student stu : list) { System.out.println(stu.getName()); System.out.println(stu.getLearningDate()); System.out.println(stu.getLearningNo()); }和範例三很像,只是新增一個class,然後將覆寫的方法寫在裡面
沒有留言:
張貼留言