美文网首页
List和Map集合详解

List和Map集合详解

作者: 清风乀月 | 来源:发表于2019-07-29 15:25 被阅读0次

一、List集合中添加Map集合

List<Map<Integer, String>> listaddmap = new ArrayList<>();

        Map<Integer,String> mapAggregate = new HashMap<>();

        for (int i = 0; i < 5; i++) {

            for (int j = 0; j < 5; j++) {
                mapAggregate.put(j,"helloj="+j+",i="+i);
            }
            listaddmap.add(mapAggregate);
        }

双重for循环引发的问题,map集合中后面的内容会覆盖前面的内容,原因是map是以键值对的方式存储,如果对一个键名相同的内容赋值,后面的内容会覆盖前面的内容

对此代码应该修改为
 List<Map<Integer, String>> listaddmap = new ArrayList<>();

        Map<Integer,String> mapAggregate = null;

        for (int i = 0; i < 5; i++) {
            mapAggregate = new HashMap<>();
            for (int j = 0; j < 5; j++) {
                mapAggregate.put(j,"hello---j="+j+"---i="+i);
            }
            listaddmap.add(mapAggregate);
        }

将map的创建放置到for循环中,每次执行循环就会重新创建一个map,即使键值对重复,也不会出现内容的覆盖

其中List集合的遍历方式有三种
        List<User> lists = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            User user = new User("李佳方",i);
            lists.add(user);
        }

        /**
         * 遍历的方式有三种
         * 第一种:使用foreach方式遍历
         */
        for (User list:lists){

            System.out.println(list.getUsername()+"---"+list.getAge());
        }
        /**
         * 第二种 将list集合转换为数组遍历
         */

        User[] listss = new User[lists.size()];
        lists.toArray(listss);
        for (int i = 0; i < listss.length; i++) {
            System.out.println(listss[i].getUsername()+listss[i].getAge());
        }

        /**
         * 使用迭代器的方式进行遍历
         */
        Iterator<User> iterator = lists.iterator();
        while (iterator.hasNext()){
            //System.out.println(iterator.next().getUsername());
            System.out.println(iterator.next().getAge());
        }


相关文章

网友评论

      本文标题:List和Map集合详解

      本文链接:https://www.haomeiwen.com/subject/hylbrctx.html