我有一个List<List<Object>>
类型的数据。我需要在“列表”列表中添加相同的值。
我尝试了以下操作,但由于其类型为List<Boolean>
,因此无法正常工作。
List<List<Object>> data = ...;
data.stream().map(v -> v.add("test")).collect(Collectors.toList());
如何获得相同类型的List<List<Object>>
?
我有以下数据:
"data": [
[
5,
"Johnny",
"Lollobrigida"
],
[
6,
"Bette",
"Nicholson"
],
[
7,
"Grace",
"Mostel"
],
[
8,
"Matthew",
"Johansson"
]
]
我想将其更改为:
"data": [
[
5,
"Johnny",
"Lollobrigida",
"test"
],
[
6,
"Bette",
"Nicholson",
"test"
],
[
7,
"Grace",
"Mostel" ,
"test"
],
[
8,
"Matthew",
"Johansson",
"test"
]
]
答案 0 :(得分:5)
@蜘蛛鲍里斯(Boris the Spider)是正确的:forEach:
data.forEach(v -> v.add("test"));
答案 1 :(得分:2)
List.add()
返回一个boolean
,但是您希望您的map()
返回添加了新元素的List
。
您需要:
List<List<Object>> out =
data.stream()
.map(v -> {v.add("test"); return v;})
.collect(Collectors.toList());
请注意,如果您不想变异原始的内部List
,则可以创建它们的副本:
List<List<Object>> out =
data.stream()
.map(v -> {
List<Object> l = new ArrayList<>(v);
l.add("test");
return l;
})
.collect(Collectors.toList());
答案 2 :(得分:2)
添加元素后,您需要从map
返回列表。以下解决方案应为您工作:
List<List<Object>> dataModified = data.stream().map(v -> {
v.add("test");
return v;
}).collect(Collectors.toList());