所得地图到逗号的在Java基础
问题描述:
我在下面的程序开发了这种其排序键的基础上,HashMap
上,如下所示进行分离:所得地图到逗号的在Java基础
Map<String, String> countryCapitalMap = new HashMap<>();
countryCapitalMap.put("guyana", "georgetown");
countryCapitalMap.put("nepal", "kathmandu");
countryCapitalMap.put("australia", "canberra");
countryCapitalMap.put("india", "newdelhi");
countryCapitalMap.put("japan", "tokyo");
System.out.println("Original Map : \n" + countryCapitalMap);
Map<String, String> sortedMap = new LinkedHashMap<>();
Stream<Map.Entry<String, String>> stream = countryCapitalMap.entrySet().stream();
stream.sorted(Map.Entry.comparingByKey()).forEach(System.out::print);
现在程序工作正常和其输出是:
Original Map:
{guyana=georgetown, japan=tokyo, nepal=kathmandu, australia=canberra, india=newdelhi}
australia=canberraguyana=georgetownindia=newdelhijapan=tokyonepal=kathmandu
如在原始地图,这是逗号分隔的情况下示出,所以我想是要也逗号分隔的键的基础上排序所得到的地图。请告知如何实现这一点。
寻找只有方法参考的解决方案。
答
的原因是,你只输出输入的文本。所以你只能用Entry#toString
打印key=value
。地图本身用逗号连接所有这些输入文本。使用StringJoiner
String result = stream
.sorted(Map.Entry.comparingByKey()) // Sorted
.map(Map.Entry::toString); // Entry -> String
.collect(Collectors.joining(", ")); // Collect by joining
// Print the result
System.out.println(result);
另一种解决方案:
您可以通过建立自己的String
,例如通过使用StringBuilder
,StringJoiner
,String#join
或Collectors#joining
解决这个
StringJoiner sj = new StringJoiner(", ");
stream.sorted(Map.Entry.comparingByKey()) // Sorted
.map(Map.Entry::toString); // Entry -> String
.forEach(sj::add); // Add to joiner
// Print the result
String result = sj.toString();
System.out.println(result);
这里是说类的单证:
你为什么要声明一个变量'sortedMap',并用新的'LinkedHashMap的初始化',当你从不使用它? – Holger
@ user1493927如果用户回答你的问题,也请接受他的回答([接受答案:它是如何工作的?](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-工作))。如果不是,那么请说明还没有答案,这是*的重要组成部分,非常感谢。 – Zabuza