双列集合(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));
}
}