package com.Lucky.Map;
import java.util.HashMap;
import java.util.Map;
/*
map接口: 无法new ,只能new他的实现类
*/
public class MapDemo {
public static void main(String[] args) {
// put(k key,v,value) :添加元素
// remove(Object key) :移除元素
//void clear() :清除集合元素
//boolean containsKey(Object key) :判断该键是否包含在该集合里面
//boolean containsValue(Object Value) :判断该值是否包含在该集合里面
//boolean isEmpty() :判断集合是否为空
//int size() :判断集合大小
//创建Map集合
Map<String,String> map=new HashMap<>();
System.out.println("-------- put(K Key,V Value): 添加/覆盖----------------");
/*
put: 添加/覆盖
1.如果添加数据时,键不存在,就直接将数据添加到键值对对象里面,返回null
2.如果添加数据时,键已经存在,就将原有的键值对对象覆盖,返回被覆盖的值。
*/
System.out.println(map.put("文艺人士","人生无常"));
map.put("唯易人生","YYDS");
map.put("不凭明天","只凭朝夕");
map.put("测试代码","BUG");
System.out.println(map.put("文艺人士","XXS")); //对原有的键值对对象进行覆盖操作
System.out.println(map);
System.out.println("-------- remove(K Key):移除元素----------------");
System.out.println(map.remove("文艺人士")); //返回移除的键值对的值
System.out.println(map.remove("不凭明天","BUGCS")); //键值对没有找到就返回false
System.out.println("-------- containsKey(K Key):判断键值对是否包含在集合中----------------");
System.out.println(map.containsKey("不凭明天"));
System.out.println(map.containsValue("xxs"));
System.out.println("-------- isEmpty():判断集合是否为空----------------");
System.out.println(map.isEmpty());
System.out.println(map.size());
map.clear();
System.out.println(map);
}
}
遍历Map集合的方法:
①keySet
package com.Lucky.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
遍历获取Map集合的键值对
1.通过键找值的方法:关键点:keySet();
*/
public class MapDemo1 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("唯易人生","YYDS");
map.put("不凭明天","只凭朝夕");
map.put("测试代码","BUG");
//生成Set集合获取Map集合的所有键
final Set<String> strings = map.keySet();
//1.利用增强for循环得到每一个键
System.out.println("--------利用增强for循环得到每一个键----------");
for (String str : strings) { //str是键值对的键
//再利用键找到所有的值
String res=map.get(str);
System.out.println(str+":"+res);
}
//2.利用增强迭代器得到每一个键
System.out.println("--------利用增强迭代器得到每一个键-----------");
Iterator<String> ite = strings.iterator();
while (ite.hasNext()){
//再利用键找到所有的值
String key=ite.next();
String val=map.get(key);
System.out.println(key+":"+val);
}
//利用lamda表达式
System.out.println("--------利用lamda表达式-----------");
strings.forEach(str-> System.out.println(str+":"+map.get(str)));
}
}
②entrySet
package com.Lucky.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
获取键值对的第二种方法: entrySet();或取整个键值对对象
*/
public class MapDemo2 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("BUG","时刻存在");
map.put("爱情BUG","NB");
map.put("人生无常","大肠包小肠");
//每天一个小知识:alt+enter == ctrl+alt+v
Set<Map.Entry<String, String>> entries = map.entrySet();
//遍历获取
entries.forEach(str-> System.out.println(str.getKey()+":"+str.getValue()));
for (Map.Entry<String, String> entry : entries) {
System.out.println(entry.getKey()+":"+entry.getValue());
}
System.out.println("*********************");
Iterator<Map.Entry<String, String>> iterator = entries.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
③forEach
package com.Lucky.Map;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
/*
获取键值对的第三种方法: 直接forEach
*/
public class MapDemo3 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("QWERT","DFGHJK");
map.put("挨打杂货福","万能");
map.forEach(new BiConsumer<String, String>() {
@Override
public void accept(String k, String v) {
System.out.println(k+":"+v);
}
});
//简化版
map.forEach((String k, String v)->{
System.out.println(k+":"+v);
}
);
//最简版
map.forEach((k,v)-> System.out.println(k+":"+v));
}
}