Java 在特定条件下选择映射列表
我使用下面的方法创建多个列表和计数器。 从Java的角度来看,我认为这不是正确的方法。我是 我想我可以使用一个有键值对的映射,应该有键 其值类型为列表。你能告诉我我下面的代码是怎么写的吗 更改为使用地图,以及如何对其进行编辑以使其更加 有意义Java 在特定条件下选择映射列表,java,Java,我使用下面的方法创建多个列表和计数器。 从Java的角度来看,我认为这不是正确的方法。我是 我想我可以使用一个有键值对的映射,应该有键 其值类型为列表。你能告诉我我下面的代码是怎么写的吗 更改为使用地图,以及如何对其进行编辑以使其更加 有意义 public Map<String, Object> abclistcount(String Id) { List<abcIdentifierabcobject> successfulboaabcIdentifierabco
public Map<String, Object> abclistcount(String Id)
{
List<abcIdentifierabcobject> successfulboaabcIdentifierabcobjects = new ArrayList <abcIdentifierabcobject>();
List<abcIdentifierabcobject> failureboaabcIdentifierabcobjects = new ArrayList <abcIdentifierabcobject>();
List<abcIdentifierabcobject> exceptionboasettlement = new ArrayList <abcIdentifierabcobject>();
List<abcIdentifierabcobject> successfulboasettlement = new ArrayList <abcIdentifierabcobject>();
HashMap<String, Object> data = new HashMap<String, Object>();
List<defInfo> reportData = new ArrayList<defInfo>();
List<abcIdentifierabcobject> abcIdentifierabcobjects = futuresFeedHome.getabcIdentifierabcobjects(fileIdentifier);
//counter to track
int failurecounterboafeed = 0;
int failurecounterboasettlement =0;
int sucessboasettlement =0;
int successboacount=0;
if (abcIdentifierabcobjects !=null && abcIdentifierabcobjects.size()>0)
{
for (abcIdentifierabcobject f : abcIdentifierabcobjects)
{
defInfo abjkfeed = new defInfo();
// INVALID_STATIC_DATA fails at boa_futures feed side itself
if ("INVALID_STATIC_DATA".equalsIgnoreCase(f.getStatus()) /* INVALID RECORD*/)
{
failureboaabcIdentifierabcobjects.add(f) ;
failurecounterboafeed++;
abjkfeed.setHeader("Futures Intraday Report");
abjkfeed.setData(failureboaabcIdentifierabcobjects);
reportData.add(abjkfeed);
}
//if not fail in boa_futures_feed then
successfulboaabcIdentifierabcobjects.add(f);
successboacount++;
}
for (abcIdentifierabcobject f : successfulboaabcIdentifierabcobjects)
{
Settlement settlement = f.getSettlement();
//tracking the records that are fail on boa_settlement side
//futher filtering fail at GEN EX queue or Awaiting ack
if (fwqConstants.AF_T_ZY_SETTLEMENT_EXCEPTION.equalsIgnoreCase(settlement.getCurrentWFQueue()) || fwqConstants.AF_T_ZY_SETTLEMENT_SENT_EX.equalsIgnoreCase(settlement.getCurrentWFQueue()))
{
exceptionboasettlement.add(f);
failurecounterboasettlement++;
}
defInfo successfulpayments = new defInfo();
//seprating the successful list of boa_settlement one in a seprate list
if (fwqConstants.AF_T_ZY_COMPLETED.equalsIgnoreCase(settlement.getCurrentWFQueue()) || fwqConstants.AF_T_ZY_SETTLEMENT_CREATED.equalsIgnoreCase(settlement.getCurrentWFQueue()))
{
successfulboasettlement.add(f);
sucessboasettlement++;
successfulpayments.setHeader("Successful Payments");
successfulpayments.setData(successfulboasettlement);
reportData.add(successfulpayments);
}
}
}
return data;
}
公共映射abclistcount(字符串Id)
{
List successfulboaabcIdentifierabcobjects=newarraylist();
List failureboaabcIdentifierabcobjects=newarraylist();
列表例外boacolution=newarraylist();
List successfulboaconsolution=newarraylist();
HashMap数据=新的HashMap();
List reportData=new ArrayList();
List abcIdentifierabcobjects=futuresFeedHome.getabcIdentifierabcobjects(文件标识符);
//反跟踪
int failurecounterboafeed=0;
int FailureCounterBoa=0;
int successboacolution=0;
int successboacount=0;
if(abcIdentifierabcobjects!=null&&abcIdentifierabcobjects.size()>0)
{
for(abcidentierabcobject f:abcidentierabcobjects)
{
defInfo abjkfeed=新的defInfo();
//无效的_静态_数据在boa_期货供给端自身失败
if(“无效的静态数据”。equalsIgnoreCase(f.getStatus())/*无效记录*/)
{
failureboaabcIdentifierabcobjects.add(f);
failurecounterboafeed++;
abjkfeed.setHeader(“期货日内报告”);
abjkfeed.setData(failureboaaccidentifierabcobjects);
reportData.add(abjkfeed);
}
//如果boa_futures_feed没有失败,那么
成功的事件发生者添加(f);
successboaccount++;
}
for(abcidentierabcobject f:successfulboaabcidentierabcobjects)
{
结算结算=f.getconsolution();
//跟踪boa_结算方失败的记录
//在GEN EX队列或等待ack时进一步过滤失败
if(fwqConstants.AF_T_ZY_结算_异常.equalsIgnoreCase(结算.getCurrentWFQueue())| | fwqConstants.AF_T_ZY_结算_发送_EX.equalsIgnoreCase(结算.getCurrentWFQueue()))
{
例外情况。添加(f);
故障解决++;
}
Definitfo successfulpayments=新Definitfo();
//将成功的boa_结算清单拆分为一个拆分清单
如果(fwqConstants.AF_T_ZY_已完成.equalsIgnoreCase(结算.getCurrentWFQueue())| | fwqConstants.AF_T_ZY_结算.equalsIgnoreCase(结算.getCurrentWFQueue()))
{
结算成功。添加(f);
成功解决++;
successfulpayments.setHeader(“成功付款”);
成功付款。设置数据(成功结算);
reportData.add(成功付款);
}
}
}
返回数据;
}
我将纠正命名约定,但这次的重点是如何删除我在内部使用的许多ArrayList。这里的列表仍然有意义。贴图用于关联不同的关键点和值,同时跟踪不同对象的列表。我想说的是,你需要摆脱柜台,因为它们是不需要的。如果需要特定列表的计数,只需调用
list.size()
如果您愿意,您仍然可以使用这样的映射:
map映射和列表是非常不同的概念
当需要(一种类型的)对象的有序集合时,请选择一个列表
如果要存储关系,将键(一种类型的对象)与值(另一种类型的对象)关联,请使用贴图
它们之间几乎没有重叠。如果要存储关系,请使用地图;否则,不要我真的很难理解你的第一段,考虑一个编辑你需要缩短你的变量名。我完全赞成使用描述性名称,但与所有其他列表一样,successfulboaabacidentifierabcobjects
是不可理解的。对于Java中的主要源代码,使用随机字母序列是不可接受的。函数和变量也应该在camelCase中,也可以更改。看看我不明白的问题-是关于用映射替换IdentifierObject列表吗?此外,计数器似乎没有被使用-你需要它们做什么?@user2355514那么每个列表都是abcIdentifierAbcObject可以拥有的“状态”吗?也;“abc”代表什么?它似乎无处不在。那宝儿是蛇吗?