我正在开展一个项目,我正在创建一个过去的总统及其血型的TreeMap。第一步是生成从血型到总统的地图,然后按字母顺序打印出来。我有那个部分是正确的,但我正在努力与下一部分。对于项目的后半部分,我应该创建一个逆映射,其中总统是关键,血型是值。我似乎无法弄清楚如何在不搞砸上半场的情况下让它发挥作用。我附上了一张输出应该是什么样子的图片。我感谢任何反馈。 Output Image
import java.io.*;
import java.util.*;
public class BloodBank
{
public static void main(String[] args) throws Exception
{
BufferedReader infile = new BufferedReader( new FileReader( "type2pres.txt" ) );
TreeMap<String,TreeSet<String>> type2pres = new TreeMap<String,TreeSet<String>>();
while ( infile.ready() )
{
ArrayList<String> tokens = new ArrayList<String>( Arrays.asList( infile.readLine().split(",") ) );
String bloodType = tokens.remove(0);
type2pres.put( bloodType, new TreeSet<String>(tokens) );
}
for ( String type : type2pres.keySet() )
{ TreeSet<String> presidents = type2pres.get( type );
System.out.print( type + "\t" );
for ( String pres : presidents )
{
System.out.print( pres + "\t" );
}
System.out.println();
}
} // MAIN
} // BLOODBANK
答案 0 :(得分:0)
for ( String type : type2pres.keySet() )
{
TreeMap<String, String> map = new TreeMap<>();
for (String president : type2pres.get(type)) {
map.put(president, type);
System.out.print( president + "\t" );
System.out.println( type + "\t" );
}
}
答案 1 :(得分:0)
您可以使用Java 8的stream()
以ascen顺序打印所有名称,例如:
type2pres.entrySet().stream()
.flatMap(e -> e.getValue().stream().map(v -> v + "\t" + e.getKey()))
.sorted()
.forEach(System.out::println);