菜鸟学JAVA之——集合框架(三)(Map接口的实现类HashMap)

泄露秘密 提交于 2019-12-22 17:13:50

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遍历

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!