【发布时间】:2019-11-15 01:26:58
【问题描述】:
我想将 Map 的 Stream 转换为 String,以将其附加到 textArea。我尝试了一些方法,最后一个是使用 StringBuilder,但它们不起作用。
public <K, V extends Comparable<? super V>> String sortByAscendentValue(Map<K, V> map, int maxSize) {
StringBuilder sBuilder = new StringBuilder();
Stream<Map.Entry<K,V>> sorted =
map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()));
BufferedReader br = new BufferedReader(new InputStreamReader((InputStream) sorted));
String read;
try {
while ((read=br.readLine()) != null) {
//System.out.println(read);
sBuilder.append(read);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sorted.limit(maxSize).forEach(System.out::println);
return sBuilder.toString();
}
【问题讨论】:
-
你能给我们一个示例地图,以及字符串输出应该是什么?
-
我认为您在这里混淆了 Java 的两种(名称混淆)不同类型的“流”。如果您只看
Collectors.joining(),您应该能够更简单地实现您的目标,而无需所有BufferedReader的东西。
标签: java string dictionary stream