I have a Map <Long, List<SerialDate>>
:
The SerialDate
has two fields: Number,String
1 -> (Number1|String1, Number2|String2)
2 -> (Number1|String1, Number2|String2)
3 -> (Number3|String3)
The code is like:
Map<Long, List<SerialMaskData>> upcDataMap = new HashMap<>();//
for(SerialMappingData data : serialDataList3p){
Long upc = data.getUpcNumber();
String mask = data.getSerialMask();
String algorithm = data.getSerialAlgorithm();//
SerialMaskData serialMaskData = new SerialMaskData(mask,algorithm);//
if(!upcDataMap.containsKey(upc)){
List<SerialMaskData> list = new ArrayList<>();//
list.add(serialMaskData);//
upcDataMap.put(upc, list);
}else{
upcDataMap.get(upc).add(serialMaskData);
}
}
What I want is to do a classification:
[1,2], (Number1|String1, Number2|String2), groupId1 // because they have the same value format.
[3], (Number3|String3), groupId2
I have tried to build a reverse Map<List<Number|String>, Long>, but it was a bad idea to use List as a map key. I think it can be done with stream.groupingby
but not sure how to do it.