TreeMap
由键决定:不重复、无索引、可排序。
可排序:对键进行排序。
TreeMap和TreeSet底层原理一样,均是红黑树结构。
两种排序规则:
1)实现Comparable接口,比较规则(在一个类的上方implenments Comparable).
2)创建集合时传递Comparator比较器对象,指定比较规则。
练习一:
TreeMap基本应用
需求1:键:整数表示id,值:字符串表示商品名称
要求:按照id的降序排列
public class test {public static void main(String [] args) {TreeMap<Integer,String> t=new TreeMap<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});t.put(1, "可口可乐");t.put(2, "雷碧");t.put(3, "粤利粤");System.out.println(t);}
}
练习二:
统计个数
需求:字符串“aababcabdabcde",请统计字符串中每一个字符出现的次数,并按照以下格式输出输出结果:a (5)b(4)c(3)d(2)e (1)
public class test {public static void main(String [] args) {String str="aababcabdabcde";TreeMap<Character, Integer> t=new TreeMap<>();for(int i=0;i<str.length();i++) {char c=str.charAt(i);//获取每一个字符,添加到集合中if(t.containsKey(c)) {//判断字符是否存在//存在int count=t.get(c);//获取键对应的值count++;t.put(c, count);}else {//不存在t.put(c, 1);}}System.out.println(t);//按照格式输出,利用StringBuilderStringBuilder sb=new StringBuilder();//利用遍历进行拼接Set<Character> set=t.keySet();for(Character key:set) {sb.append(key).append("(").append(t.get(key)).append(")");}System.out.println(sb);}
}