Map容器
Map自己就是顶级接口,他并不是Collection的子接口。List的顶级接口是Collection,Collection上面还有一个接口Iterable。
list、set放置内容的时候,使用的都是单一一个泛型来确定放置的内容的类型是什么
Map的一些方法
确认是否有键值containsKey
,确认是否有值containsValue
,确实是否为空isEmpty
,长度size
,放置内容put
,取出内容get(key)
,删除内容remove
,转换成容器values
public class Main {
public static void main(String[] args) {
//映射表
//map中存的是K-V对,我们放置内容的时候,确定一下Key值和V值,这两个值
//一一对应,我们取值的时候,使用的是Key值来取出V值
Map<String,Student> map = new HashMap<>();
map.put("liguocheng",new Student("liguocheng",23)); //添加
System.out.println(map.get("liguocheng"));//获取/替换
System.out.println(map.size()); //求长
Student s = new Student("libin",99);
map.put("liguocheng",s);//下来输出size大小为1,因为里面不能放重复的Key值。如果一样,则后面添加的把前面添加的覆盖
System.out.println(map.size());//输出2
System.out.println(map.get("liguocheng").name); //输出libin
System.out.println(map.containsKey("liguocheng"));//true
System.out.println(map.containsKey("zhangaoqi"));//false
System.out.println(map.containsValue(s));//true
System.out.println(map.isEmpty());//false 判断是否为空
//转换成容器类型
//values:将所有value值拿出来放到一个集合中
//比如放到一个list中,这是就不需要再用Key来取值,用脚标就可以了
List<Student> list = new ArrayList<>();
list.addAll(map.values());
System.out.println(list.get(0));
System.out.println("---------------------");
map.put("zhangaoqi",new Student("zaq",20));
map.replace("zhangaoqi",new Student("zhangaoqi",19));//替换,与put类似(key值一样就可以替换)
}
}
Map的两种遍历方式
//纵切式遍历
Set<String> keys = map.keySet();
for(String item : keys) {
System.out.println(item + ": " +map.get(item).name);
}
//横切遍历
Set<Map.Entry<String,Student>> entries = map.entrySet();
for(Map.Entry<String,Student> item : entries) {
System.out.println(item.getKey() + ": " +item.getValue().name);
}
map不能用iterator遍历,当然也就不能用foreach遍历
来源:CSDN
作者:沉默菜鸟张
链接:https://blog.csdn.net/ysf15609260848/article/details/103653429