首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以使用size和for循环遍历map吗?

我们可以使用size和for循环遍历map吗?
EN

Stack Overflow用户
提问于 2016-08-10 22:51:15
回答 2查看 735关注 0票数 0

我有下面的代码。

代码语言:javascript
复制
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());
}

在这里,我试图通过对size进行循环来获取键和值。

我知道这可以使用以下命令来完成

代码语言:javascript
复制
for (Object keys : map.keySet().toArray()) {
    System.out.println(keys);
}

但我必须一次比较两个值,然后进行相应的工作。我想知道我是否可以使用size and循环。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-10 22:59:50

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

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

此外,一般做法是在声明List时使用List而不是ArrayList。这样,它就保留了多态性。关于比较,你不清楚你试图比较的是什么,所以我真的不能给出答案。

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 23:07:49

迭代器可以完成与索引类似的角色。

代码语言:javascript
复制
Iterator<Map.Entry<String, ArrayList<String>> iter1 = map.entrySet().iterator();
Iterator<Map.Entry<String, ArrayList<String>> iter2 = map.entrySet().iterator();

while (iter1.hasNext() || iter2.hasNext()) {
    ...
    if (iter1.hasNext()) {
        entry1 = iter1.next();
    } 
}

顺便说一句,它更传统,键入更少,如下所示:

代码语言:javascript
复制
List<String> list1 = new ArrayList<>();
Map<String, List<String>> map = new HashMap<>();

也就是说,将变量指定为接口,并保留特定的实现类。也是方法参数的理想选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38876819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档