正在迭代地图列表,以便只写入其内容



每个参与者都在投票给其他人一些数值,我想用代理的名字来写这些信息。

通过以下代码,

cj.makingDefault().stream()
.forEach(a->out.print(a.entrySet()));

我打印了一份地图清单,就是

[ari=[0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03], 
hyo=[0.31, 0.31, 0.317, 0.31..., ji=[...], yoo=[...], mi=[...]..]

如何按代理只打印数值,并用换行符分隔?

期望的结果就像

0.3, 0.3, 0.3, ...0.3
0.31, 0.31, 0.31, ...0.31,
...

如果有7名参与者,则采用7乘7矩阵。

提前感谢您的帮助~

编辑(作为临时解决方案,我修改了";cj.makingDefault(("函数仅返回Map<字符串,列表>并将代码更改为此。

cj.makingDefault().entrySet()
.stream().forEach(a->out.print(a.getValue()+"n"));

我得到了

[0.0056009042654552865, 0.0056009042654552865, 0.0056009042654552865, 0.0056009042654552865, 0.0056009042654552865, 0.0056009042654552865, 0.0056009042654552865]
[0.31583809304895144, 0.31583809304895144, 0.31583809304895144, 0.31583809304895144, 0.31583809304895144, 0.31583809304895144, 0.31583809304895144]
[0.9924090841607273, 0.9924090841607273, 0.9924090841607273, 0.9924090841607273, 0.9924090841607273, 0.9924090841607273, 0.9924090841607273]
[0.8093898651356558, 0.8093898651356558, 0.8093898651356558, 0.8093898651356558, 0.8093898651356558, 0.8093898651356558, 0.8093898651356558]
[0.015200181208559038, 0.015200181208559038, 0.015200181208559038, 0.015200181208559038, 0.015200181208559038, 0.015200181208559038, 0.015200181208559038]
[0.03947825506938696, 0.03947825506938696, 0.03947825506938696, 0.03947825506938696, 0.03947825506938696, 0.03947825506938696, 0.03947825506938696]
[0.39173806385104337, 0.39173806385104337, 0.39173806385104337, 0.39173806385104337, 0.39173806385104337, 0.39173806385104337, 0.39173806385104337]

那么我该如何消除这个…的suqare刹车呢。。?那将是完美的。。

您看到的是一个集合的默认toString实现,它将包括方括号。

你必须自己打印列表中的元素。

cj.makingDefault().stream()
.forEach(a -> print(a.values()));
private void print(Collection<Double> values) {
System.out.println(values.stream()
.map(String::valueOf)
.collect(Collectors.joining(",")));
}

您必须首先迭代映射值,即列表,然后迭代这些列表中的项,以覆盖标准的toString输出。

Map<String, List<Double>> map = ...
String result = map.values().stream()
.map(s -> s.stream()
.map(String::valueOf)
.collect(Collectors.joining(", ")))
.collect(Collectors.joining("n"));

最新更新