I have a TreeMap <String, TreeSet <String>>
{Heat = [Bosh, Lebron, Wade], Nets =[DWill, KG], Sonics = null, Warriors = [Curry,Iggy,Thompson]}
我要打印出来。
Heat Bosh Lebron Wade
Nets DWill KG
Sonics
Warriors Curry Iggy Thompson
我已经尝试了
for ( String w : listNBA){
System.out.print( w + " ");
if (treemap.containsKey(w))
System.out.println(treemap.get(w));
else
System.out.println( "" ); // print nothing if team doesn't exist
但这也不是正确的,它的输出是......
Heat [Bosh, Lebron, Wade]
Nets [DWill, KG]
Sonics null
Warriors [Curry,Iggy,Thompson]
所以,我的问题是:在我的print方法中有没有简单的方法将TreeSet转换为String?
答案 0 :(得分:2)
您可以这样做:
StringBuilder stringBuilder = new StringBuilder();
for (Entry<String, TreeSet<String>> mapEntry : treemap.entrySet()) {
stringBuilder.append(mapEntry.getKey());
if (mapEntry.getValue() != null) {
for (String setEntry : mapEntry.getValue()) {
stringBuilder.append(" ").append(setEntry);
}
}
stringBuilder.append("\n");
}
System.out.println(stringBuilder.toString());
答案 1 :(得分:1)
Java 8有一个String.join
方法可以很好地解决这个问题:
for ( String w : listNBA){
System.out.print( w + " ");
if (treemap.containsKey(w) && treemap.get(w) != null)
System.out.println(String.join(" ",treemap.get(w)));
else
System.out.println( "" ); // print nothing if team doesn't exist
}
请注意,如果原始System.out.println(treemap.get(w))
打印null
,如果get
方法返回null
,则String.join
会抛出NullPointerException
获取一个null参数。因此,我已对之前的if
添加了空检查。
join
的第一个参数是将在每个输入字符串之间插入的字符串。它可以采用可变数量的String
(或任何其他CharSequence
)参数,也可以采用String
(或其他CharSequence
数组)。
答案 2 :(得分:0)
您可以遍历条目集并打印出密钥和相应的值。
for(Map.Entry<String, TreeSet <String>> entry : treemap.entrySet())
{
System.out.print( entry.getKey() + " ");
System.out.print( entry.getValue());
}