我正在創建一個項目,我正在創建一個過去的總統及其血型的TreeMap。第一步是從血型生成地圖到總統,然後按字母順序打印出來。我有這個部分是正確的,但我正在努力與下一部分。對於項目的後半部分,我應該創建一個逆映射,其中總統是關鍵,血型是價值。我似乎無法弄清楚如何在不摧毀上半場的情況下實現這一目標。我附上了輸出應該是什麼樣子的圖片。我很欣賞任何反饋。 Output Image如何獲得TreeSet的逆映射
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
你只需要進行第二次'地圖<字符串,請設置>'並像往常一樣將元素添加到該元素中,但是會反轉鍵值。 –
可能的重複:http://stackoverflow.com/questions/20412354/reverse-hashmap-keys-and-values-in-java但是你的情況有點複雜,因爲你需要兩個循環:一個通過'type2pres.entrySet ()'和另一個'entry.getValue()'。這不應該干擾你的第一張地圖,因爲你需要爲反向映射製作另一張地圖。 – Radiodef