java - HashMap 的数组/列表?

标签 java

我来自 Perl 编程领域,不熟悉如何在 Java 中创建哈希列表。

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

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

读出它也同样容易:

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

如何在 Java 中完成类似的事情?要么只使用字符串,要么也可能使用对象?

最佳答案

以下内容大致相当于您的 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());
}

这种方法(使用自定义类)通常更健壮、更高效,并且为您提供更具可读性的代码。

关于java - HashMap 的数组/列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011916/

相关文章:

java - 为什么我不能有一个只有字母大小写不同的 java 类名和接口(interface)名?

java - 在 Tomcat 上部署一个 SpringBoot 应用程序作为一个 WAR 包

java - ASCII 到 HTML 实体在 Java 中转义

java - 无法同步(java.util.ConcurrentModificationException)

java - 如何在 messages.properties 文件中使用命名参数?

java - 签名后更新 token 中的 jwt 范围

java - 如何将 Nexus maven 存储库索引 (nexus-maven-repository-index) 移动到其他目录(不是临时目录)

java - xml中替换字符时如何防止ant构建改变国家字符

java - 如何将Json请求中带unicode的值转换成简单字符?

java - Heritrix3.2.0可以爬ajax网站吗?