2017-04-22 2 views
0

私は過去の大統領とその血液型のTreeMapを作成しているプロジェクトに取り組んでいます。最初のステップは、血液型から大統領にマップを生成し、それをアルファベット順に印刷することです。私は正しい部分を持っていますが、私は次の部分に苦労しています。プロジェクトの後半には、社長が鍵となり、血液型が値である逆マッピングを作成することになっています。私はこれを最初の半分を締め付けることなく動作させる方法を理解しているようには見えません。出力がどのように見えるのかの写真を添付し​​ました。私はフィードバックを感謝します。 Output ImageTreeSetの逆マッピングを取得する方法

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 
+1

二 '地図<文字列、設定>'以前と同じように要素を追加しますが、キーと値を逆にします。 –

+0

可能な重複:http://stackoverflow.com/questions/20412354/reverse-hashmap-keys-and-values-in-java 2つのループが必要になるので、あなたのケースはもう少し複雑です:type2pres.entrySet () 'と各' entry.getValue() 'の上に別のものがあります。逆マッピングのために別のマップを作成する必要があるため、これは最初のマップに干渉しないはずです。 – Radiodef

答えて

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"); 
     } 

    } 
+0

大統領がアルファベット順で、血液型ではないことを確認したいのであれば、どうすればいいですか? – Ironman131

0

あなたは8のstream()、Javaなどでascen順にすべての名前を印刷することができます:あなたは確認する必要があり

type2pres.entrySet().stream() 
.flatMap(e -> e.getValue().stream().map(v -> v + "\t" + e.getKey())) 
.sorted() 
.forEach(System.out::println); 
関連する問題