java - 我们可以使用 size 和 for 循环遍历 map 吗

标签 java hashmap

我有以下代码。

String[] guest1 = { "surfing", "yoga", "walking" };
String[] guest2 = { "wine", "relaxation", "beach" };

ArrayList<String> list1 = new ArrayList<>();
list1.add("museums");
list1.add("canals");
list1.add("nightlife");
list1.add("walking");
ArrayList<String> list2 = new ArrayList<>();
list2.add("beach");
list2.add("surfing");
list2.add("relaxation");
ArrayList<String> list3 = new ArrayList<>();
list3.add("surfing");
list3.add("nightlife");
list3.add("beach");
list3.add("food");
list3.add("wine");
list3.add("walking");

String[] sagres = { "beach", "surfing", "relaxation" };
String[] biarritz = { "surfing", "nightlife", "beach", "food", "wine", "walking" };

Map map = new HashMap<String, ArrayList<String>>();
map.put("amsterdam", list1);
map.put("sagres", list2);
map.put("biarritz", list3);

for (int i = 0; i < map.size(); i++) {
    System.out.println(map.keySet());
}

在这里,我尝试通过循环大小来获取键和值。

我知道这可以使用

来完成
for (Object keys : map.keySet().toArray()) {
    System.out.println(keys);
}

但我必须一次比较 2 个值并进行相应的工作。我想知道是否可以使用 size 和循环。

谢谢

最佳答案

此代码获取 Map 的条目集。然后它迭代整个集合并打印出键和值,并用逗号和制表符分隔。自 entry.getValue()返回 List<String> ,需要将其转换为String用于串联。

for (Map.Entry<String, List<String>> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ", \t" + entry.getValue().toString());
}

此外,一般实践建议使用 List而不是ArrayList当声明List时。这样,它保留了多态性。关于比较,你不清楚你要比较什么,所以我无法真正给出答案。

关于java - 我们可以使用 size 和 for 循环遍历 map 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38876819/

相关文章:

java - 方法中的 charAt 不起作用

java - 在 Android 中向 urlConnection 添加 header

java - 如何在类级别初始化 HashMap 而不使用静态 block

java-当我重复使用一个元素然后将该键的值更新到 HashMap 中时,反复出现错误

Java HashMap 通过 JPA 作为 MySQL 中的一个元素

java - 如何根据索引位置从模型列表中检索数据并将其存储在textview中

java - 如何解决 hibernate 错误: Repeated column in mapping for entity?

java - weblogic.jdbc.wrapper.Array_oracle_sql_ARRAY 无法转换为 oracle.sql.ARRAY

java - 对象 HashMap 内存/引用问题

java - 如何向我的 Map<Integer>、List<String>> 添加一个值?