有一个列表:[“ aaa”,“ bbb”,“ ccc”]
我想将其转换为以下结构
[{
main = aaa,
others = [bbb, ccc]
}, {
main = bbb,
others = [aaa, ccc]
}, {
main = ccc,
others = [aaa, bbb]
}]
现在我的方式是
List<String> list = newArrayList("aaa", "bbb", "ccc");
List<ImmutableMap<String, Object>> mainAndOthersList = list.stream().map(s -> ImmutableMap.of("main", s, "others", list.stream().filter(s2 -> !s2.equals(s)).collect(toList()))).collect(toList());
System.out.println(mainAndOthersList);
还有其他实现方式吗?
答案 0 :(得分:1)
这里是不带流的替代方法,从主观上讲更容易或更难阅读。
List<String> list = Arrays.asList("aaa", "bbb", "ccc");
List<Map<String,Object>> result = new ArrayList<>();
for(int i = 0; i < list.size(); i++) {
Map<String,Object> map = new HashMap<>();
List<Object> innerList = new ArrayList<>(list);
map.put((String)innerList.remove(i), innerList);
result.add(map);
}
答案 1 :(得分:0)
如果$ grep "$P" input.txt
<No output>
内的元素不是字符串,并且可以使用List
,则基本上可以对索引进行流处理:
java-9
但是请注意,这几乎与您已经在做的一样。