Java 列表可视化

Java list visualization

我有一个List<Polygon> polygons,其中Polygon代表geojson的多边形概念。在 class 多边形中,我定义了一个方法 toGeojson(),该方法 returns 一个包含 geojson 表示的字符串。我想以紧凑的方式打印所有列表而不是这样做:

String result = '';
for(Polygon p: polygons)
   result += p.toGeojson();

我可以 result = p.toString() 但我不能使用 toString() 方法,因为我将它用于其他事情。有没有办法像调用 toString() 一样在列表中调用 toGeojson()

不确定这是否回答了您的问题,但是您可以使用 Stream api 来解决这个问题。

String result = polygons.stream()
        .map(Polygon::toGeojson)
        .collect(Collectors.joining(","));

没有直接的方法来覆盖 List.toString() 的行为。

已更新 Collectors#joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix) 方法接受后缀和前缀。使用这种方法,我们可以使我们的输出看起来与带方括号的 List.toSting 完全一样。

String result = polygons.stream()
            .map(Polygon::toGeojson)
            .collect(Collectors.joining(",", "[", "]")); // ["x","y"]

我不确定我明白你想要什么,但我猜你正在寻找一种方法来打印列表中包含的每个 Polygon 的 geoJson 表示。在那种情况下,我看不到比循环更好的方法,但要避免在循环内使用 String 连接。使用 StringBuilder 而不是 much better performance.

StringBuilder result = new StringBuilder();
for (Polygon p: polygons) {
   result.append(p.toGeojson());
}

我认为你的解决方案是最好的...在 Java 中没有更快的解决方案,Array.toString 方法的工作方式相同。