TreeSet说明
treeSet可以进行排序,我们如果不进行处理,则排序是乱的
可以看到Tree拥有很多的构造器
使用TreeSet提供的一个构造器,并且传入一个匿名内部类,并指定排序规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.util.*;
public class Test { public static void main(String[] args) { TreeSet treeSet=new TreeSet(new Comparator() { @Override public int compare(Object o1, Object o2) { return ( (String)o2).compareTo((String)o1); } }); treeSet.add("as"); treeSet.add("ds"); treeSet.add("cs"); treeSet.add("es"); treeSet.add("jack"); treeSet.add("array"); System.out.println(treeSet);
} }
|
我们debug运行一下,可以看到构造器中其底层其实调用了treemap的构造器方法
而接下来,我们运行的treeset的put方法
动态绑定到我们的cpmpare啊方法中执行我们的方法
TreeMap说明
其比较的方法与上述相同
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import java.util.*;
public class Test { public static void main(String[] args) { TreeMap treeMap=new TreeMap(new Comparator() { @Override public int compare(Object o1, Object o2) { return ( (String)o2).compareTo((String)o1); } }); treeMap.put("as","haha"); treeMap.put("bs","haha"); treeMap.put("ij","haha"); treeMap.put("arr","haha"); treeMap.put("bt","haha"); System.out.println(treeMap);
} }
|
下面我们进行根据字符串的大小进行比较,因为这个TreeMap返回的compare当长度相等为0,进行舍弃,顾可以发现bt并没有打出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import java.util.*;
public class Test { public static void main(String[] args) { TreeMap treeMap=new TreeMap(new Comparator() { @Override public int compare(Object o1, Object o2) { return ( ((String)o2).length())-(((String)o1).length()); } }); treeMap.put("as","haha"); treeMap.put("bsfgn","haha"); treeMap.put("ijgf","haha"); treeMap.put("arr","haha"); treeMap.put("bt","haha"); System.out.println(treeMap);
} }
|