gpt4 book ai didi

java - 填充 LinkedHashSet 的奇怪问题

转载 作者:行者123 更新时间:2023-11-30 04:24:48 30 4
gpt4 key购买 nike

鉴于下面的代码,是否有某种原因,当最终的 if-else 语句进入 else 子句时,如果我取消注释这两行代码并注释“FOOZANAZABAR”和“TESTCAIRO”行,那么它不会将这些行添加到 LinkedHashSet 中吗?看来要添加 value.add(new BigDecimal(PEUNIT).multiply(new BigDecimal(1000)).toString());当逻辑放入 else 子句时正确,但不会将 BD.ZERO 或 PEFAMT 添加到该字段,尽管它们是字符串。

请注意,ZERO 和 PEFAMT 是转换为字符串的 BigDecimal。这是唯一让我悲伤的两个值(value)观。任何方向将不胜感激。

public static LinkedHashMap<String, LinkedHashSet<String>> convertTransactionTableData(ResultSet rs) {
LinkedHashMap<String, LinkedHashSet<String>> returnableMap = new LinkedHashMap<String, LinkedHashSet<String>> ();

try {
while (rs.next()){
String PEFAMT, PEPOLN, MCISST, PEBRCD, PEEFFY, PEPLAN;
String PEUNIT, PETRNC, PECO, PEITYP, ZERO;

PEPOLN = rs.getString("PEPOLN");
MCISST = rs.getString("MCISST");
PEBRCD = rs.getBigDecimal("PEBRCD").toString();
PEEFFY = rs.getBigDecimal("PEEFFY").toString();
PEPLAN = rs.getString("PEPLAN");
PEUNIT = rs.getBigDecimal("PEUNIT").toString();
PEFAMT = rs.getBigDecimal("PEFAMT").toString();
PETRNC = rs.getString("PETRNC");
PECO = rs.getString("PECO");
PEITYP = DataConverter.resetInsuranceType(rs.getString("PEITYP"));
ZERO = BigDecimal.ZERO.toPlainString();

String policyNumber = PEPOLN;
LinkedHashSet<String> values = new LinkedHashSet<String>();
values.add(MCISST);
values.add(PEBRCD);
values.add(PEEFFY);
values.add(PEPLAN);
values.add(PEUNIT);
if (PEPLAN.equalsIgnoreCase("HSRE")) {
values.add(new BigDecimal(PEUNIT).multiply(new BigDecimal(1000)).toString());
} else {
values.add(PEFAMT);
}
values.add(PETRNC);
values.add(PECO);
values.add(PEITYP);
if (DataConverter.testStringToInt(PETRNC)) {
if (Integer.valueOf(PETRNC) >= 20 && Integer.valueOf(PETRNC) <= 29) {
values.add(PEFAMT);
values.add(ZERO);
values.add(ZERO);
} else {
values.add("FOOZANZABAR");
values.add("TESTCAIRO");
// values.add(ZERO);
// values.add(PEFAMT);
values.add(new BigDecimal(PEUNIT).multiply(new BigDecimal(1000)).toString());
}
}
returnableMap.put(policyNumber, values);
}
} catch (SQLException sqlEx) {
logger.error("Problem converting the ResultSet. ", sqlEx);
}
return returnableMap;
}

提前谢谢您。

  • 乔什

最佳答案

请注意,您在此处使用的基础数据结构是SET,这意味着它不允许您添加重复项。很可能,BD.ZERO 和 PEFAMT 的字符串值必须已存在于您的 values 中。设置并因此被忽略。

如果事实证明是这种情况,只需切换到使用 LinkedList<String>这允许您有重复项。

关于java - 填充 LinkedHashSet 的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217025/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com