2011-02-16 56 views
2

我來自Perl編程的世界,我不熟悉如何在Java中創建哈希列表。散列表的數組/列表?

在Perl中,創建散列的名單是很容易。

 
@rows = (
{ food=>'pizza'}, 
{ drink=>'coke'} 
); 

讀出來也很容易:

 
foreach my $row (@$rows){ 
print $row->{food}; 
print $row->{drink}; 
} 

一個如何將完成在Java中類似的東西?或者只是用字符串,或者還有對象的可能性?

回答

8

下大致相當於你的Perl代碼。

List<Map<String,String>> mapList = new ArrayList<Map<String,String>>(); 
Map<String,String>> map1 = new HashMap<String,String>(); 
map1.put("food", "pizza"); 
Map<String,String>> map2 = new HashMap<String,String>(); 
map2.put("drink", "coke"); 
Collections.addAll(mapList, map1, map2); 

... 

for (Map<String,String> map : mapList) { 
    System.out.println("food is " + map.get("food")); 
    System.out.println("drink is " + map.get("drink")); 
} 

但是,正如您所看到的,這比Perl中的繁瑣得多。這使我想到,在Java中使用自定義類而不是關聯數組(例如Map實例)來完成這種事情通常是更好的主意。然後,你可以這樣寫,就像這樣:

List<Diet> dietList = new ArrayList<Diet>(); 
Collections.addAll(dietList, new Diet("pizza", null), new Diet(null, "coke"); 

... 

for (Diet diet : dietList) { 
    System.out.println("food is " + diet.getFood()); 
    System.out.println("drink is " + diet.getDrink()); 
} 

這種方法(使用自定義類)通常更強勁,更高效,併爲您提供更可讀的代碼。

2
List<Map<String,String>> mapList = new ArrayList<HashMap<String,String>>() 

沒有代碼,你已經試過以上規格我可以提供你在做什麼 尋找一個例子。詢問更多細節,我可以提供更多信息。

遍歷列表:

for (Map<String, String> map : mapList) { 
    String value = map.get("food"); 
} 
1

其實在Java中相當長的比較到perl :(

要創建:

List<Map<String,String>> list = new ArrayList<Map<String,String>>(); 

Map value1 = new HashMap(); 
value1.put("foo", "pizza"); 
list.add(value1); 

Map value2 = new HashMap(); 
value2.put("drink", "coke"); 
list.add(value2); 

閱讀:

for (Map<String,String> element : list) { 
    // print keys and values 
} 

如果你想要東西莫重新動態,仍​​然可以訪問java庫,你可以使用Groovy(或Scala或clojure)。