集合框架17:Map集合的实现类、TreeMap使用

1.Map集合的实现类

HashMap:线程不安全、运行效率快;允许用null作为key或者value;

HashTable:线程安全,运行效率慢,不允许null作为key或者value;

Properties:Hashtable的子类,要求key和value都是String,通常用于配置文件的读取;

TreeMap:实现了SortedMap接口(是Map的子接口),可以对key进行排序;

2.TreeMap使用举例

package com.yundait.demo02;

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;

public class TreeMapDemo01 {
    public static void main(String[] args) {
        //创建集合 并使用内部类的方式定义排序方式
        TreeMap<Student, String> treeMap = new TreeMap<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int n1 = o1.getStuNo() - o2.getStuNo();
                return n1;
            }
        });

        //添加元素

        Student s1 = new Student("孙悟空",10001);
        Student s2 = new Student("猪八戒",10002);
        Student s3 = new Student("沙和尚",10000);

        treeMap.put(s1,"北京");
        treeMap.put(s2,"天津");
        treeMap.put(s3,"和田");
        treeMap.put(new Student("沙和尚",10000),"南京");//不能加入,但是会把value覆盖掉;
        System.out.println(treeMap.toString());
        System.out.println("元素个数" + treeMap.size());

        //删除元素

        //treeMap.remove(s3);
        //treeMap.remove(new Student("沙和尚",10000));//学号(StuNo)相同就认为是同一个元素
        System.out.println("删除后元素个数:" + treeMap.size());
        System.out.println(treeMap.toString());

        //遍历元素

        //使用keySet方法进行遍历

        for (Student key : treeMap.keySet()) {
            System.out.println(key+"-----------"+treeMap.get(key));
        }

        //使用entrySet进行遍历
        System.out.println("++++++++++++++++++++++++++++++");
        for (Map.Entry<Student, String> entry : treeMap.entrySet()) {
            System.out.println(entry.getKey() + "----------" + entry.getValue());
        }


        //判断
        System.out.println(treeMap.containsKey(new Student("沙和尚",10000)));
        System.out.println(treeMap.containsValue("东京"));
        
    }
}

通过源码我们可以知道TreeSet集合使用了TreeMap集合的key存放数据;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值