我来自Perl编程世界,并且不熟悉如何在Java中创建哈希列表。
在perl中,创建哈希列表很容易。
@rows = (
{ food=>'pizza'},
{ drink=>'coke'}
);
阅读它同样容易:
foreach my $row (@$rows){
print $row->{food};
print $row->{drink};
}
如何在Java中实现类似的功能?既可以是字符串,也可以是对象的可能性?
答案 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)这样的东西。