Map集合

在这里插入图片描述

Map HashMap Hashtable

特点:无序,唯一

public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("lili",1234533);
        map.put("nana",765342);
        map.put("jack",87653553);
        map.put("lili",174356);
        System.out.println(map);//{nana=765342, lili=174356, jack=87653553}

keyset values

keyset返回集合中所有的key,类型是Set
values返回集合中所有的value,类型是collection

//keyset 返回集合中所有的key
        Set<String> key = map.keySet();
        for(String s:key)
        {
            System.out.print(s+" "); //nana lili jack
        }
        //返回collection类型的所有value
        Collection<Integer> values = map.values();
        for(Integer i:values)
        {
            System.out.print(i+" "); //765342 174356 87653553
        }

得到所有value的另一种方法(get(key))

Set<String> key = map.keySet();
        for(String s:key)
        {
            //通过get获得所有value
            System.out.print(map.get(s)+" "); //765342 174356 87653553 
        }

查看集合元素 entry

		//Entry是一个接口
       //这个Set集合中的每一个元素都是Entry的实现类(相当于对这两个泛型的封装)
       Set<Map.Entry<String, Integer>> entries = map.entrySet();
       for(Map.Entry<String,Integer> e:entries)
       {
           //e相当把key和value一起封装,
           // 并且相当于Entry下的具体的一个实现类
           System.out.println(e.getKey()+"-----"+e.getValue());
       }

LinkedHashMap

唯一,有序
底层多了一个链表维护

#hashmap
当两个entry类的key值相同时,第二个entry会把前一个entry的value替换

Treemap

按key的升序排列,唯一

遍历的3种方式

1.Set<Entry<K,V>> entrySet();

Set<Map.Entry<Integer, String>> entrySet = studentMap.entrySet();
        for (Map.Entry<Integer, String> entry : entrySet) {//map集合里面的每组数据 都在entry对象中
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println("key:" + key + "  -----   value:" + value);

2.Set keySet 返回map的所有key(性能低),可以通过key get到value

Set<Integer> keySet = studentMap.keySet();
        Iterator<Integer> it = keySet.iterator();
        while (it.hasNext()) {
            Integer key = it.next();
            String value = studentMap.get(key);
            System.out.println("key:" + key + "  -----   value:" + value);

3.forEach(Bicosumer bi) 需要重写参数中的接口方法

studentMap.forEach(new BiConsumer<Integer, String>() {
            @Override
            public void accept(Integer key, String value) {
                System.out.println("key:" + key + "  -----   value:" + value);
            }
        });

4.只能获得value Collection values();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值