【问题标题】:Java list visualizationJava列表可视化
【发布时间】:2017-05-10 09:37:08
【问题描述】:

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

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

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

【问题讨论】:

标签: java list geojson tostring


【解决方案1】:

不确定这是否能回答您的问题,但您可以使用 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"]

【讨论】:

    【解决方案2】:

    我不确定我是否理解您想要的内容,但我猜您正在寻找一种方法来打印列表中包含的每个 Polygon 的 geoJson 表示。在这种情况下,我没有看到比循环更好的方法,但要避免在循环内连接String。使用 StringBuilder 代替 much better performance

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        • 2010-10-24
        • 2015-05-01
        • 2013-12-22
        • 2021-02-27
        • 1970-01-01
        相关资源
        最近更新 更多