打印出TreeMap <string,treeset <string =“”>&gt;键和映射值</string,>

时间:2014-04-15 18:52:31

标签: java printing

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?

3 个答案:

答案 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());
 }