本文概览:介绍对集合内元素进行排序的方法。可以通过Colletions#sort方法、TreeMap和Treeset来实现
1 TreeMap
1、注意
比较函数返回结果只有-1和1,如果为0就会覆盖数据。
2、实例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class Test { public static void main(String[] args){ TreeMap<Integer,String> sortMap = new TreeMap<Integer, String>(new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o1 -o2; } } ); sortMap.put(2,"dd"); sortMap.put(1,"dd"); sortMap.put(3,"dd"); for(Integer key : sortMap.keySet()){ System.out.println(""+key+"="+sortMap.get(key)); } } } |
2 TreeSet
需要注意的是TreeMap一样,就是“比较函数返回结果只有-1和1,如果为0就会覆盖数据。”。下面是一个demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class TreeSetTest { public static void main(String[] args){ TreeSet<Integer> set = new TreeSet<Integer>(new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o1-o2; } }); set.add(3); set.add(1); set.add(2); System.out.println(set.toString()); } } |
3 Collections两个sort方法
3.1 定义Comparator
一个demo代码例子为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class CollectionTest { public static void main(String[] args){ List<Integer> input = Lists.newArrayList(); input.add(3); input.add(1); input.add(2); Collections.sort(input, new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o1 - o2; } }); System.out.printf(input.toString()); } } |
3.2 元素需要实现Comparable
定义一个对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class Model implements Comparable<Model> { int size; public Model(int size){ this.size = size; } public int compareTo(Model o) { return size - o.getSize(); } public int getSize() { return size; } public void setSize(int size) { this.size = size; } } |
进行排序
1 2 3 4 5 6 7 8 9 10 11 |
public class ModelSort { public static void main(String[] args){ List<Model> input = Lists.newArrayList(); input.add(new Model(3)); input.add(new Model(1)); input.add(new Model(2)); Collections.sort(input); System.out.println(input.toString()); } } |
(待完善)