Java-Map集合

Map集合

  • Map集合概述:存储键值对应关系的数据,也就是映射关系。
  • Map集合特点:
    (1) Map 集合中不能存在相同的键,一个键只能对应一个值,键相同值覆盖。
    (2)Map 集合的数据结构 只跟键有关 ,跟值无关。
    (3)基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
  • Map集合功能概述:
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        //添加键值对
        //当键相同,但是值不一样时,会产生覆盖现象,返回的是覆盖的值
        String a1 = map.put(1, "小明");
        String a2 = map.put(2, "小红");
        String a3 = map.put(3, "小强");
        String a4 = map.put(3, "小白");
        String a5 = map.put(4, "小文");
        String a6 = map.put(5, "小方");
        System.out.println(map.toString());
        //{1=小明, 2=小红, 3=小白, 4=小文, 5=小方}

        //删除一个键值对
        map.remove(5);
        //{1=小明, 2=小红, 3=小白, 4=小文}

        //判断功能
        //判断这个集合有没有这个键
        boolean b1 = map.containsKey(8);
        System.out.println(b1);//false
        //判断集合有没有这个值
        boolean b2 = map.containsValue("小文");
        System.out.println(b2);//true
        //判断这个集合是否为空
        boolean empty = map.isEmpty();
        System.out.println(empty);//false

        //清空集合
        // hm.clear();

        //获取集合长度
        System.out.println(map.size());//4
        //获取所有值的集合
        Collection<String> values = map.values();
        for(String v:values){
            System.out.print(v+" ");
        }// 小明 小红 小白 小文

        //遍历集合的2种方式
        //方式1:键找值
        Set<Integer> in = map.keySet();//集合
        for(Integer i:in){
            String s = map.get(i);//
            System.out.println(i+"=="+s);
            //1==小明
            //2==小红
            //3==小白
            //4==小文
        }
        System.out.println("--------");

        //方式2
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for(Map.Entry<Integer, String> en : entries){
            System.out.println(en.getKey()+"=="+en.getValue());
        }
        //1==小明
        //2==小红
        //3==小白
        //4==小文

    }
}

LinkedHashMap

  • LinkedHashMap的概述:Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序
  • LinkedHashMap的特点: 底层的数据结构是链表和哈希表,元素有序并且唯一。元素的有序性由链表数据结构保证唯一性由哈希表数据结构保证,Map集合的数据结构只和键有关。
public class MyTest3 {
    public static void main(String[] args) {
        // LinkedHashMap 元素有序且唯一
        LinkedHashMap<String, String> lkm = new LinkedHashMap<>();
        lkm.put("小青","白娘子");
        lkm.put("周杰伦","昆凌");
        lkm.put("杨过","姑姑");
        lkm.put("a","A");
        lkm.put("b","B");
        Set<String> keys = lkm.keySet();
        for(String key:keys){
            System.out.println(key+"====="+lkm.get(key));
        }
        //小青==白娘子
        //周杰伦==昆凌
        //杨过==姑姑
        //a==A
        //b==B
    }
}

TreeMap

  • TreeMap:
    (1) 键的数据结构是红黑树,可保证键的排序和唯一性
    (2)排序分为自然排序和比较器排序
    (3)线程是不安全的效率比较高
public class MyTest {
    public static void main(String[] args) {
        //Map 集合的数据结构,只跟键有关
        //TreeMap 不允许插入null键,允许插入null值
        TreeMap<Integer, String> hm = new TreeMap<>();
        hm.put(1,"张靓颖");
        hm.put(3,"刘亦菲");
        hm.put(6,"王祖贤");
        hm.put(2,"章子怡");
        hm.put(7,"杨颖");
        hm.put(0,"杨幂");
        hm.put(8,null);
        //hm.put(null,"aaa");
        //java.lang.NullPointerException 不允许null键
        Set<Integer> keys = hm.keySet();
        for(Integer key:keys){
            System.out.println(key+"==="+hm.get(key));
        }
        //0===杨幂
        //1===张靓颖
        //2===章子怡
        //3===刘亦菲
        //6===王祖贤
        //7===杨颖
        //8===null

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值