数组赋值理解错误,造成数据错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组赋值理解错误,造成数据错误相关的知识,希望对你有一定的参考价值。

情景:需求导出数据。

具体功能:根据查询结果导出数据,如果没有勾选需要导出的数据,则导出 全部数据如果勾选了,则导出查询结果中选择的数据。

实现方法:在查询时把生成查询条件放到session中,查询条件是个集合,在导出时获取session中的查询条件和选择的数据的id,生成新的查询条件。

问题:第一次导出时数据正确,第二次导出时获得的session中的查询条件为第一次时生成的查询条件,导致导出的结果为此次条件与上一次条件的并的结果

错误原因:数组的复制与赋值概念不清。以下为代码

正确代码:

List searchParams = (List)request.getSession().getAttribute("searchQuitAssetParamsList");
        
List paramsList = new ArrayList();
for(Object param : searchParams) {
  paramsList.add(param);
}
String ids
= request.getParameter("ids"); if (ids != null && !"".equals(ids)) {   ids = ids.substring(0, ids.length() - 1); paramsList.set(6, paramsList.get(6) + " and asset_id in (" + ids + ")"); } List list = assetQuitService.getAssetQuit(null, paramsList, null);

错误代码:

List paramsList = (List)request.getSession().getAttribute("searchQuitAssetParamsList");
for(Object param : searchParams) { 
  paramsList.add(param);
}
String ids
= request.getParameter("ids");
if (ids != null && !"".equals(ids)) {
  ids
= ids.substring(0, ids.length() - 1);
  paramsList.set(
6, paramsList.get(6) + " and asset_id in (" + ids + ")");
}
List list
= assetQuitService.getAssetQuit(null, paramsList, null);

以上是关于数组赋值理解错误,造成数据错误的主要内容,如果未能解决你的问题,请参考以下文章

易语言二维数组一次性赋值错误

[]map[string]struct 的 Golang 赋值错误

TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段

错误赋值给数组类型的表达式

java基础(数组集合)

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”