【发布时间】:2022-01-14 14:53:09
【问题描述】:
我得到: TextInfo 对象列表的列表。每个 TextInfo 对象都包含一段文本和一个用于返回文本的 toString 覆盖方法。通过 TextInfo 的 Y 值,我们可以得出 TextInfo 在同一行(自定义问题)的结论
我想要: 字符串列表。每个字符串是一个子列表的所有元素连接的结果。而且我想尽可能地利用流。
到目前为止:
List<String> allLinesByYCoordinate = groupAllTextLineByLineBasedOnY(allTextInfosOnPage);
public static List<String> groupAllTextLineByLineBasedOnY(List<TextInfo> allTextInfo) {
Map<Object, List<TextInfo>> groupedtextInfosPerLine = allTextInfo.stream().
collect(Collectors.groupingBy(x -> x.getY()));
List<String> allLines = new ArrayList<>();
for (Map.Entry<Object, List<TextInfo>> groupedtextInfos: groupedtextInfosPerLine.entrySet()) {
String temp = "";
for (TextInfo textInfo: groupedtextInfos.getValue()) {
temp += textInfo;
}
allLines.add(temp);
}
return allLines;
}
您可能同意 groupAllTextLineByLineBasedOnY 方法看起来有点过时。我正在尝试对大列表中的每个 TextInfo 列表执行串联,从而生成一个字符串列表,其中每个字符串曾经是 TextInfo 的列表
我希望能找到一个简洁的 stream() 解决方案
【问题讨论】:
标签: java java-stream