Apache Commons Collections MultiValuedMap 按多个字段过滤数据
Apache Commons Collections MultiValuedMap to filter data by multiple fields
下面的数据是内存中的集合 java ArrayList
,需要从这个集合中根据两个字段(VRNT_CD 和 ITM_NB)
VRNT_CD ITM_NB COMMT_TEXT
10 A0A SampleText1
10 A0A SampleText2
10 A0A SampleText3
10 A0B SampleText4
10 A0C SampleText5
20 A0A SampleText6
20 A0A SampleText7
20 A0B SampleText8
20 A0C SampleText9
30 A0A SampleText10
30 A0A SampleText11
30 AOB SampleText12
30 A0C SampleText13
30 A0C SampleText14
如上所述,上面 table 中的每一行都映射到下面 java 对象
public class SummaryDataOracle {
private String funcCode;
private String commentText;
private String variantCd;
private String itemNB;
//setters //getters
}
上面table的集合表示为List<SummaryDataOracle>
,需要根据下面的key
使用集合对象生成map
public class VssKey {
private String funCode;
private String varntCode;
private String itemNb;
//setters //getters // equals // hashcode
}
因此生成的集合应具有以下数据结构
AOA 10 SampleText1
SampleText2
SampleText3
20 SampleText6
SampleText7
30 SampleText10
SampleText11
AOB 10 SampleText4
20 SampleText8
30 SampleText12
AOC 10 SampleText5
20 SampleText9
30 SampleText13
SampleText14
通过实施以下对象并使用 apache commons MultiValuedMap
.
解决了问题
public class VssKey {
// getterrs
// setters
// equals
// hashcode
}
MultiValuedMap<VssKey, String> partNumberVarientMap = new ArrayListValuedHashMap<>();
for (SummaryDataOracle summaryDataOracle : summeryDataOracleList) {
VssKey key = new VssKey(summaryDataOracle);
String varntText = null;
if (!StringUtils.isEmpty(summaryDataOracle.getVariantSmText())) {
varntText = summaryDataOracle.getVariantSmText().trim();
}
partNumberVarientMap.put(key, varntText);
}
下面的数据是内存中的集合 java ArrayList
,需要从这个集合中根据两个字段(VRNT_CD 和 ITM_NB)
VRNT_CD ITM_NB COMMT_TEXT
10 A0A SampleText1
10 A0A SampleText2
10 A0A SampleText3
10 A0B SampleText4
10 A0C SampleText5
20 A0A SampleText6
20 A0A SampleText7
20 A0B SampleText8
20 A0C SampleText9
30 A0A SampleText10
30 A0A SampleText11
30 AOB SampleText12
30 A0C SampleText13
30 A0C SampleText14
如上所述,上面 table 中的每一行都映射到下面 java 对象
public class SummaryDataOracle {
private String funcCode;
private String commentText;
private String variantCd;
private String itemNB;
//setters //getters
}
上面table的集合表示为List<SummaryDataOracle>
,需要根据下面的key
public class VssKey {
private String funCode;
private String varntCode;
private String itemNb;
//setters //getters // equals // hashcode
}
因此生成的集合应具有以下数据结构
AOA 10 SampleText1
SampleText2
SampleText3
20 SampleText6
SampleText7
30 SampleText10
SampleText11
AOB 10 SampleText4
20 SampleText8
30 SampleText12
AOC 10 SampleText5
20 SampleText9
30 SampleText13
SampleText14
通过实施以下对象并使用 apache commons MultiValuedMap
.
public class VssKey {
// getterrs
// setters
// equals
// hashcode
}
MultiValuedMap<VssKey, String> partNumberVarientMap = new ArrayListValuedHashMap<>();
for (SummaryDataOracle summaryDataOracle : summeryDataOracleList) {
VssKey key = new VssKey(summaryDataOracle);
String varntText = null;
if (!StringUtils.isEmpty(summaryDataOracle.getVariantSmText())) {
varntText = summaryDataOracle.getVariantSmText().trim();
}
partNumberVarientMap.put(key, varntText);
}