Map接口常用的方法
put(K key, V value) 向Map集合中添加键值对
V get(Object key) 通过key获取value
void clear() 清空Map集合。
boolean containsKey(Object key) 判断Map中是否包含某个key,则返回 true 。
boolean containsValue(Object value) 判断Map中是否包含某个value,则返回 true 。
Set<Map.Entry<K,V>> entrySet() 返回此地图中包含的映射的Set视图。
boolean equals(Object o) 将指定的对象与此映射进行比较以获得相等性。
int hashCode() 返回此地图的哈希码值。
boolean isEmpty() 判空。
Set keySet() 获取Map集合中的所有key(所有的键是一个set集合)
V remove(Object key) 删除某个key
int size() 返回此地图中键值映射的数量/个数。
Collection values() 获取Map集合中的所有的value,返回一个collection
Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
假设现在有一个Map集合,如下:
key1 value
map1集合对象
1 xiaowang
2 liming
3 laoli
4 zhangsan
Set set=map1.entrySet();
输出的set集合对象
1=xiaowang
2=liming
3=laoli
4=zhangsan
【注意:Map集合通过entrySet()方法转换成的这个Set集合,set集合中的元素类型是Map.Entry
Map.Entry和String一样,都是一种类型的名字,只不过:Map.Entry是静态内部类,是Map中的静态内部类】
复习一下内部类:
package Mapiiiiii;
import java.util.HashSet;
import java.util.Set;
public class Mapsilent {
//静态内部类
private static class InnerClass{
//静态方法
public static void mi(){
System.out.println("静态内部类中的静态方法正在执行");
}
//实例方法
public void ni(){
System.out.println("静态内部类的实例方法正在执行");
}
}
public static void main(String[] args) {
//类名叫做 Mapsilent.InnerClass
Mapsilent.InnerClass.mi();
Mapsilent.InnerClass ma=new Mapsilent.InnerClass();
ma.ni();
//给一个Set集合
//该Set集合中存储的对象是Mapsilent.InnerClass类型
Set<Mapsilent.InnerClass> set=new HashSet<>();
//这个Set集合中存储的是字符串对象
Set<String> set1=new HashSet<>();
Set<MyMap.MyEntry<Integer,String>> set2=new HashSet<>();
}
}
class MyMap{
public static class MyEntry<K,V>{
}
}
/*
静态内部类中的静态方法正在执行
静态内部类的实例方法正在执行
*/
开始啦!!!!!!
package Mapiiiiii;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class MapTest01 {
public static void main(String[] args) {
//创建集合对象
Map<Integer,String> map=new HashMap<>();
//添加键值对
map.put(1,"脆脆鲨");
map.put(3,"小熊妮");
map.put(2,"鸡腿");
map.put(4,"白昼小熊");
//通过key获取value
String value=map.get(4);
System.out.println(value);
//获取键值对的数量
System.out.println("键值对的数量为:"+map.size());
//删除
map.remove(2);
System.out.println("键值对的数量为:"+map.size());
//判断是否包含某个key
//contains方法底层调用的是equals进行对比,所以自定义的类型需要重写equals方法
//重写过的equals方法比较的是内容
System.out.println(map.containsKey(4));
//判断是否包含某个value
System.out.println(map.containsValue("白昼小熊"));
//获取所有的value
Collection<String> values=map.values();
for(String str:values){
System.out.println(str);
}
//判空
System.out.println(map.isEmpty());
//清空
map.clear();
System.out.println(map.isEmpty());
//判断是否包含某个key
System.out.println(map.containsKey(4));
}
}
Map集合的遍历:
第一种:获取所有的key,通过遍历key来遍历value
第二种:foreach遍历
第三种: Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
package Mapiiiiii;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
Map集合的遍历:
第一种:获取所有的key,通过遍历key来遍历value
第二种:foreach遍历
第三种: Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
*/
public class MapTest02 {
public static void main(String[] args) {
//创建集合对象
Map<Integer,String> map=new HashMap<>();
//添加键值对
map.put(1,"脆脆鲨");
map.put(3,"小熊妮");
map.put(2,"鸡腿");
map.put(4,"白昼小熊");
Set<Integer> keys=map.keySet();
//第一种:获取所有的key,通过遍历key来遍历value
Iterator<Integer> it=keys.iterator();
while(it.hasNext()){
//取出其中一个key
Integer key=it.next();
//通过key获取value
String value=map.get(key);
System.out.println(key+"="+value);
}
System.out.println("------------");
//第二种:foreach遍历
for(Integer str:keys){
System.out.println(str +"="+map.get(str));
}
System.out.println("------------");
//第三种: Set<Map.Entry<K,V>> entrySet() 将Map集合转换成Set集合
//set集合中元素的类型为:Map.Entry
Set<Map.Entry<Integer,String>> set= map.entrySet();
//遍历Set集合,每次取出一个Node
//用迭代器遍历
Iterator<Map.Entry<Integer,String>> it2=set.iterator();
while(it2.hasNext()){
Map.Entry<Integer,String> node= it2.next();
/*Integer key=node.getKey();
String value= node.getValue();
System.out.println(key+"="+value);*/
System.out.println(node);
}
System.out.println("========");
//这种方式效率比较高,比较适合大数据量
for(Map.Entry<Integer,String> node:set){
//这两种都可以
// System.out.println(node.getKey()+"="+node.getValue());
System.out.println(node);
}
}
}