2013-10-02 70 views
3

在我的應用程序中,我有一個列表名稱。我希望根據索引值將其轉換爲地圖。例如番石榴:將列表轉換爲索引作爲鍵的地圖

List<String> names = new ArrayList<String>(); 
names.add("Pratik"); 
names.add("Pratik"); 
names.add("Ram"); 
names.add("Varun"); 

你能幫助我做一些番石榴/ Java API的方法,可以幫我拿地圖,關鍵是指數值是名稱,即使有重複的值?如果名稱中有兩個「Pratik」字符串。地圖應該是這樣的

0 - > 「PRATIK」,1 - > 「PRATIK」,2 - > 「拉姆」,3 - > 「Varun的」

+7

你爲什麼需要這個?你可以像列表一樣使用它......你只需要在地圖上花費一些開銷......我只看到缺點,而沒有這個方法的優點。 – ppeterka

+0

爲什麼不簡單地循環和構建地圖。它只有兩行代碼。 –

回答

7

我認爲你不「T需要番石榴這裏:

Map<Integer, String> map = new HashMap<Integer, String>(); 
int i = 0; 
for (String name : names) { 
    map.put(i++, name); 
} 

System.out.println(map); 

打印:

{0=Pratik, 1=Pratik, 2=Ram, 3=Varun} 

如果你絕對想辦法與番石榴做到這一點,你可以這樣做(但我會建議JDK的方式,以避免不必要的複雜性):

Maps.asMap(
    ContiguousSet.create(Range.closedOpen(0, names.size()), DiscreteDomain.integers()), 
      new Function<Integer, String>() { 
       @Override 
       public String apply(Integer input) { 
        return names.get(input); 
       } 
      }); 

順便說一句,我不明白爲什麼你就必須做到這一點。