LinkedHashMap<String, Object> 数据去重
时间: 2023-12-17 10:25:04 浏览: 135
可以使用Java 8的Stream API来对LinkedHashMap进行去重操作,具体代码如下:
```
List<Object> list = new ArrayList<>(map.values());
List<Object> distinctList = list.stream().distinct().collect(Collectors.toList());
```
其中,map为需要去重的LinkedHashMap对象,distinctList为去重后的结果列表。
相关问题
List<LinkedHashMap<String, Object>> dateMapList map中的key为列名,value为数据,请将list中列名相同的key做合并,bigdecimal的类型用加法做合并,其他类型的默认取第一条数据
可以参考下面的代码实现:
```java
List<LinkedHashMap<String, Object>> resultList = new ArrayList<>();
Map<String, BigDecimal> sumMap = new HashMap<>();
Map<String, String> stringMap = new HashMap<>();
Map<String, Object> objectMap = new HashMap<>();
for (LinkedHashMap<String, Object> map : dateMapList) {
for (String key : map.keySet()) {
Object value = map.get(key);
if (value instanceof BigDecimal) {
BigDecimal sum = sumMap.get(key);
if (sum == null) {
sum = BigDecimal.ZERO;
}
sumMap.put(key, sum.add((BigDecimal)value));
} else if (value instanceof String) {
if (!stringMap.containsKey(key)) {
stringMap.put(key, (String)value);
}
} else {
if (!objectMap.containsKey(key)) {
objectMap.put(key, value);
}
}
}
}
for (LinkedHashMap<String, Object> map : dateMapList) {
LinkedHashMap<String, Object> resultMap = new LinkedHashMap<>();
for (String key : map.keySet()) {
Object value = map.get(key);
if (value instanceof BigDecimal) {
resultMap.put(key, sumMap.get(key));
} else if (value instanceof String) {
resultMap.put(key, stringMap.get(key));
} else {
resultMap.put(key, objectMap.get(key));
}
}
resultList.add(resultMap);
}
```
这里首先遍历列表中的每个 map,对于每个 key-value 对,根据 value 的类型分别进行处理,BigDecimal 的值用一个 sumMap 做累加,String 的值用一个 stringMap 做去重,其他类型的值用一个 objectMap 做去重。
然后再次遍历列表中的每个 map,对于每个 key-value 对,根据 value 的类型分别从对应的 map 中取值并加入到结果 map 中。最后将结果 map 添加到结果列表中即可。
阅读全文