groovy 使用Java将多个值添加到列表后,仅检索迭代中的最新记录

p1tboqfb  于 6个月前  发布在  Java
关注(0)|答案(2)|浏览(67)

我尝试将多个记录添加到列表中并重新启动。但它只显示最新添加的记录。
这是我的代码

List<ExportBean> exportBeans = new ArrayList<ExportBean>();
ExportBean exportBean = new ExportBean();
exportBean.setBooleanValue(true);
exportBean.setKeyValue("PRE_APPROVED_OFFER");
exportBean.setStringValue("111");
exportBeans.add(exportBean);
exportBean.setBooleanValue(true);
exportBean.setKeyValue("PRE_APPROVED_OFFER1");
exportBean.setStringValue("222");
exportBeans.add(exportBean);
getLopRefNo(exportBeans);

字符串
当我把它

def getLopRefNo = {
    exportBeans->
       println "in function ${exportBeans}"
}


它只显示

in function [ExportMessagingBean{stringValue='222', keyValue='PRE_APPROVED_OFFER1', exportBoolean=true}, ExportMessagingBean{stringValue='222', keyValue='PRE_APPROVED_OFFER1', exportBoolean=true}]


它没有显示添加的第一条记录。它缺少什么吗?

wb1gzix0

wb1gzix01#

这个问题与Groovy无关,在你的代码中,你实际上不是在添加两个对象,而是在添加一个对象并修改它。

List<ExportBean> exportBeans = new ArrayList<ExportBean>();
ExportBean exportBean = new ExportBean();
exportBean.setBooleanValue(true);
exportBean.setKeyValue("PRE_APPROVED_OFFER");
exportBean.setStringValue("111");

exportBeans.add(exportBean); // add object to list

exportBean.setBooleanValue(true);
exportBean.setKeyValue("PRE_APPROVED_OFFER1");
exportBean.setStringValue("222");

exportBeans.add(exportBean); // this time, the same reference is "added". This does not result in an addition (in fact, "add" will return false here

getLopRefNo(exportBeans);

字符串
你调用add的对象已经存在于列表中,所以它没有效果。你应该做的是创建另一个ExportBean的示例,像这样:

List<ExportBean> exportBeans = new ArrayList<ExportBean>();
ExportBean exportBean = new ExportBean();
exportBean.setBooleanValue(true);
exportBean.setKeyValue("PRE_APPROVED_OFFER");
exportBean.setStringValue("111");

exportBeans.add(exportBean); // add object to list

exportBean = new ExportBean(); //create new instance of ExportBean
exportBean.setBooleanValue(true);
exportBean.setKeyValue("PRE_APPROVED_OFFER1");
exportBean.setStringValue("222");

exportBeans.add(exportBean); // this new instance will be correctly added

getLopRefNo(exportBeans);

kh212irz

kh212irz2#

在代码中只有一个ExportBean对象(你只说了一次new ExportBean()),所以你已经将同一个对象添加到列表中两次了。你对bean上的set方法的第二组调用只是更新你现有的对象,而不是创建一个新的对象。

相关问题