TreeMap
原创
©著作权归作者所有:来自51CTO博客作者Dear王的原创作品,请联系作者获取转载授权,否则将追究法律责任
TreeMap的使用
public static void main(String[] args) {
TreeMap<String,Integer> map = new TreeMap<>();
//添加元素
Integer put1 = map.put("大文", 25);
Integer put2 = map.put("小文", 26);
Integer put3 = map.put("小王", 29);
Integer put4 = map.put("小李", 28);
Integer put5 = map.put("小博", 21);
Integer put6 = map.put("小黄", 26);
System.out.println("put1:" + put1);//null
System.out.println("put2:" + put2);//null
System.out.println("put3:" + put3);//null
System.out.println("put4:" + put4);//null
System.out.println("put5:" + put5);//null
System.out.println("put6:" + put6);//null
//替换,返回被替换的值
Integer put = map.put("小黄", 27);
System.out.println("put:" + put);//26
//替换,返回被替换的值
Integer replace1 = map.replace("小黄", 28);
System.out.println("replace1:" + replace1);//27
//替换,返回是否替换成功的boolean值
boolean replace2 = map.replace("小黄", 28, 29);//key - 被替换值 -替换值
System.out.println("replace2:" + replace2);//true
//将newMap1中所有的映射关系添加到map集合中
TreeMap<String, Integer> newMap1 = new TreeMap<>();
newMap1.put("aaa", 10);
newMap1.put("bbb", 20);
newMap1.put("ccc", 30);
newMap1.put("ddd", 40);
newMap1.put("ddd", 50);
map.putAll(newMap1);
//如果key存在则返回value,如果key不存在就添加
Integer putIfAbsent = map.putIfAbsent("小王", 123);
System.out.println("putIfAbsent:" + putIfAbsent);//29
//通过key获取对应的value值
Integer integer = map.get("小李");
System.out.println("通过key获取对应的value值:" + integer);
//通过key获取对应的value值,如果没有key就返回默认值666
Integer orDefault = map.getOrDefault("小王111", 666);
System.out.println("通过key获取对应的value值:" + orDefault);
//清空所有的元素
//map.clear();
System.out.println("判断map集合中是否包含某个key:" + map.containsKey("小王"));//true
System.out.println("判断map集合中是否包含某个value:" + map.containsValue(28));//true
System.out.println("判断map集合是否有元素:" + map.isEmpty());//false
//有元素就返回false
//根据key删除映射关系
map.remove("小博");
//根据key+value删除映射关系
map.remove("小李", 28);
System.out.println("获取集合元素个数:" + map.size());//8
//获取map集合中所有的value
Collection<Integer> values = map.values();
System.out.println(Arrays.toString(values.toArray()));//集合->数组->字符串
System.out.println("---------------------");
//遍历 -- keySet()
//思路:获取map中所有的key,存入Set集合中,遍历Set集合依次把key获取出来,利用map.get(key)获取出对应的value值
Set<String> keySet = map.keySet();
for (String key : keySet) {
Integer value = map.get(key);
System.out.println(key + "--" + value);//获取出来的也是无序的
}
System.out.println("--------------------");
//遍历 - entrySet()
//思路:获取map中所有的映射关系对象(Entry),存入Set集合,遍历Set集合依次把Entry取出来,获取Entry中的key和value
Set<Entry<String,Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "--" + value);
}
}
TreeMap的特点
特点:key自然排序
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>();
map.put("b", 10);
map.put("a", 20);
map.put("c", 30);
map.put("d", 40);
map.put("e", 50);
map.put("e", 60);
Set<Entry<String,Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + " -- " + value);
}
}
内置与外置比较器
外置比较器
TreeMap<Student, String> map = new TreeMap<>(new Comparator<Student>() {//new一个外置比较和对象
内置比较器
TreeMap<Student, String> map = new TreeMap<>();
注意:在使用比较器时都需要写一个对象类