数组/ hashmap列表?

时间:2011-02-16 02:28:05

标签: java

我来自Perl编程世界,并且不熟悉如何在Java中创建哈希列表。

在perl中,创建哈希列表很容易。

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

阅读它同样容易:

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

如何在Java中实现类似的功能?既可以是字符串,也可以是对象的可能性?

3 个答案:

答案 0 :(得分: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更麻烦。这让我想到,使用自定义类而不是关联数组(例如Map实例)在Java中执行此类操作通常更好。然后你可以这样写:

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

这种方法(使用自定义类)通常更强大,更高效,并为您提供更易读的代码。

答案 1 :(得分:2)

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

如果没有代码,你已经尝试过或者更多的规范,我可以提供一个你的例子 寻找。询问更多细节,我可以提供更多信息。

迭代列表:

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

答案 2 :(得分:1)

与perl相比,实际上在java中相当长:(

创建:

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)这样的东西。