一倔既、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循環(huán)引發(fā)的問題呢蔫,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的創(chuàng)建放置到for循環(huán)中绽昏,每次執(zhí)行循環(huán)就會重新創(chuàng)建一個map协屡,即使鍵值對重復,也不會出現(xiàn)內容的覆蓋
其中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集合轉換為數(shù)組遍歷
*/
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());
}