一、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());
}