Java将list实体转为map并将指定字段相同的数据值通过@符号拼接在一起,为空的拼null
时间: 2024-09-11 16:04:24 浏览: 86
Java lambda list转换map时,把多个参数拼接作为key操作
5星 · 资源好评率100%
在Java中,如果你想要将一个List转换为Map,并且对于具有相同指定字段的数据,将其对应的值(非空)通过特定字符(比如`@`)连接起来,可以这样做:
首先,假设你有一个List,其中包含一些自定义对象,每个对象都有一个公共的键字段(keyField),你可以遍历List并创建一个新的Map:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设我们有这样一个List<YourObject>
List<YourObject> list = Arrays.asList(
new YourObject("key1", "value1"),
new YourObject("key2", "value2"),
new YourObject("key1", "another value")
);
// 创建一个新的Map,键是你的指定字段,值是拼接后的字符串(非空)
Map<String, String> map = list.stream()
.collect(Collectors.toMap(
YourObject::getKeyField,
obj -> obj.getValueField().isEmpty() ? null : "@" + obj.getValueField()
));
// 现在map就是你想要的结果
System.out.println(map); // 输出类似 {key1=@value1, key2=value2, key1=@another value}
}
}
class YourObject {
private String keyField;
private String valueField;
// getters and setters...
public String getKeyField() {
return keyField;
}
public String getValueField() {
return valueField;
}
}
```
在这个例子中,如果`valueField`为空,它会被替换为`null`。如果有多个相同的`keyField`,则后面的值会添加`@`后再追加。
阅读全文