双列集合、Map

双列集合(Entry)——和python中的字典相似

特点?    键值一一对应,键不能重复,值可以重复

Map:双列集合的顶级接口

常见API?

关于put方法细节:添加和覆盖

示例:

Map的遍历方式?——3种

1、键找值

通过将所有键获取出来(用Map实现类对象调用keySet() 方法),构成一个单列集合,并利用get方法获取出每一个值,并遍历出来(for增强,迭代器,lambda)

package MapApI;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;

public class demo1 {
    public static void main(String[] args) {
        Map<String,String> m = new HashMap<>();
        m.put("lz","ls");
        m.put("dd","yuyu");
        m.put("yy","byte");
        //获取key的集合
        Set<String> keys = m.keySet();
        //增强for
        for (String key :keys){
            String value = m.get(key);
            System.out.println(key+"="+value);
        }
        //迭代器
        Iterator<String> it = keys.iterator();
        while (it.hasNext()){
            String key = it.next();
            String value = m.get(key);
            System.out.println(key+"="+value);
        }
        //lambda省略表达式
        keys.forEach( key-> {
                String value = m.get(key);
                System.out.println(key+"="+value);
            });

    }
}

2、键值对

依次获得每个键值对对象(用Map实现类对象调用entrySet方法),利用getkey()获取里面的键,利用getValue()获取里面的值

关于entrySet

Set<Map.Entry<String, String>> entries = m.entrySet();

这里用到了接口的嵌套

Map.Entry<String, String> entry表示每一个键值对,Entry是Map的内部接口,需要用Map调用
package MapApI;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class demo2 {
    public static void main(String[] args) {
        Map<String,String> m = new HashMap<>();
        m.put("lz","ls");
        m.put("dd","yuyu");
        m.put("yy","byte");
        //获取key、value的集合
        Set<Map.Entry<String, String>> entries = m.entrySet();
        //增强for
        for (Map.Entry<String, String> entry : entries) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);

        }
        //迭代器
        Iterator<Map.Entry<String, String>> it = entries.iterator();
        while (it.hasNext()){
            Map.Entry<String, String> entry = it.next();
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }
        //lambda省略表达式
        entries.forEach( entry-> {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
            });

    }
}

3、lambda表达式:底层是利用第二种方式进行遍历,一次得到每一个键和值

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

全 部代码:

package MapApI;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

public class demo3 {
    public static void main(String[] args) {
        Map<String,String> m = new HashMap<>();
        m.put("lz","ls");
        m.put("dd","yuyu");
        m.put("yy","byte");


//        省略版
        m.forEach(( key, value)->System.out.println(key+"="+value));
    }

}

ForEach底层源码:

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值