Java:如何从排序后的Map流中取值并存入变量或jTxtPane?
解决方案
1. 将排序后的条目存入变量
用collect方法把Stream结果收集到集合变量中,替代控制台打印:
// 转换成字符串格式存入List List<String> sortedEntryStrings = map_serv.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .map(entry -> entry.getKey() + "=" + entry.getValue()) .collect(Collectors.toList()); // 直接保留Entry对象存入List List<Map.Entry<String, Long>> sortedEntries = map_serv.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .collect(Collectors.toList());
2. 插入到jTxtPane的Document中
替换forEach里的打印逻辑,调用docKO.insertString即可,注意处理异常:
map_serv.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .forEach(entry -> { String entryContent = entry.getKey() + "=" + entry.getValue() + "\n"; try { // 第三个参数为AttributeSet,无需样式可传null docKO.insertString(docKO.getLength(), entryContent, null); } catch (BadLocationException e) { e.printStackTrace(); // 可根据需求替换为日志记录等异常处理逻辑 } });
3. 同时存入变量并插入Document
在forEach中同时完成两个操作:
List<String> sortedEntryStrings = new ArrayList<>(); map_serv.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .forEach(entry -> { String entryContent = entry.getKey() + "=" + entry.getValue() + "\n"; sortedEntryStrings.add(entryContent); try { docKO.insertString(docKO.getLength(), entryContent, null); } catch (BadLocationException e) { e.printStackTrace(); } });
内容的提问来源于stack exchange,提问作者Daxan
相关产品推荐
相关产品推荐

