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 方法的工作方式相同。
我有一个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 方法的工作方式相同。