Java 打印树形图<;字符串,树集<;字符串>&燃气轮机;键和映射值

Java 打印树形图<;字符串,树集<;字符串>&燃气轮机;键和映射值,java,printing,Java,Printing,我试过了 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

我试过了

   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

所以,我的问题是:在我的print方法中,有没有简单的方法将TreeSet转换为字符串?

您可以遍历条目集并打印出键和相应的值

 Heat [Bosh, Lebron, Wade]
 Nets [DWill, KG]
 Sonics null
 Warriors [Curry,Iggy,Thompson]
for(Map.Entry:treemap.entrySet())
{
System.out.print(entry.getKey()+);
System.out.print(entry.getValue());
}

您可以执行以下操作:

 for(Map.Entry<String, TreeSet <String>> entry : treemap.entrySet())
 {
     System.out.print( entry.getKey() + " "); 
     System.out.print( entry.getValue());
 }
StringBuilder StringBuilder=新建StringBuilder();
for(条目映射条目:treemap.entrySet()){
append(mapEntry.getKey());
if(mapEntry.getValue()!=null){
for(字符串setEntry:mapEntry.getValue()){
stringBuilder.append(“”).append(setEntry);
}
}
stringBuilder.append(“\n”);
}
System.out.println(stringBuilder.toString());

Java 8有一个
字符串。join
方法非常适合:

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());
请注意,当原始的
System.out.println(treemap.get(w))
打印出
null
时,如果
get
方法返回
null
String.join
将在获取null参数时抛出
NullPointerException
。因此,我在前面的
if
中添加了一个空检查


join
的第一个参数是将插入每个输入字符串之间的字符串。它可以接受数量可变的
String
(或任何其他
CharSequence
)参数,也可以接受
String
(或其他
CharSequence
)数组。

对于每个键,对于对应值中的每个元素。。。
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());
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
}