如何解决如何在多层循环中理解ArrayList <Map <String,Object >>,ArrayList <Map <String,Object >>的内容是否相同?
当我在多层循环中使用ArrayList
import java.util.*;
public class Main {
public static void main(String [] args){
ArrayList<Map<String,Object>>resList=new ArrayList<>();
ArrayList<Map<String,Object>>resList1=new ArrayList<>();
ArrayList<String>feeNameList=feeNameList();
for(int i=0;i<1;i++){
Map<String,Object>temp=new HashMap<>();
for(int j=0;j<feeNameList.size();j++){
temp.put("feeName",feeNameList.get(j));
System.out.println(temp);
resList.add(temp);
}
}
System.out.println(resList);
System.out.println("------------------------------------------------");
for(int i=0;i<feeNameList.size();i++){
Map<String,Object>temp=new HashMap<>();
temp.put("feeName",feeNameList.get(i));
System.out.println(temp);
resList1.add(temp);
}
System.out.println(resList1);
}
public static ArrayList<String>feeNameList(){
Set<String> costNameSets=new HashSet<>();
costNameSets.add("CIC");
costNameSets.add("VGM申报费VGM_COST");
costNameSets.add("延补料费");
ArrayList<String> costNameList=new ArrayList<>();
costNameList.addAll(costNameSets);
return costNameList;
}
}
所以我想问的是,当我在多层循环中使用ArrayList
解决方法
这是因为在第一个循环中,您继续使用相同的temp变量。 基本上,您在resList中保存了3次相同的临时引用。
如果在第二个示例中将temp置于for循环之外,您将获得完全相同的结果:
System.out.println("------------------------------------------------");
// We moved temp outside of the for loop and will get the same result as the first one
Map<String,Object>temp=new HashMap<>();
for(int i=0;i<feeNameList.size();i++){
temp.put("feeName",feeNameList.get(i));
System.out.println(temp);
resList1.add(temp);
}
System.out.println(resList1);
如果在第二个for循环内的第一个示例中移动temp对象,则会得到与第二个相同的结果。在两个for循环中添加System.out.println(resList);
,以更好地了解正在发生的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。