由键决定:不重复、无索引、可排序。
可排序:对键进行排序。
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>() {
@Override
public 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);
//按照格式输出,利用StringBuilder
StringBuilder 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);
}
}