当前位置: 首页 > 知识库问答 >
问题:

如何在一个hashmap上设置2个迭代器

端木骞尧
2023-03-14

我知道如何在一个hashmap上迭代,但我不确定是否可以在一个hashmap上设置两个迭代器?

假设我有以下hashmap:

Map m = new HashMap<Integer, String>;
m.put(112334,"A");
m.put(221345,"B");
m.put(321411,"C");
m.put(431254,"D");

我想从Hashmap中得到所有值的组合,这样就不会重复对。在这种情况下,4个值-

for(int i=0; i < (size-1); i++)
    for(int l = 1;  < size; l++)....

但是在java中,我们使用迭代器,那么我如何使用迭代器呢?(如果你能找到一种方法来使用集合的索引,那也很好)。

PS:抱歉,我刚从C转到java,所以我需要你的帮助来启动。

共有2个答案

许俊晤
2023-03-14

鉴于您的方法的其余部分,使用两个for循环并没有什么问题,因为您在问题中发布了两个修补程序。

for(int i=0; i < (size-1); i++)
    for(int l = i+1; l < size; l++)....

也就是说,当数组可能是您真正想要的时,我当然不会使用映射。

须捷
2023-03-14

确保这些值实现了可比较的。字符串实现<代码>可比较

执行双循环以获取所有对(x,y),然后使用compareTo方法排除(x,x)和(y,x):

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(112334,"A");
map.put(221345,"B");
map.put(321411,"C");
map.put(431254,"D");

Collection<String> values = map.values();
for (String str1 : values) {
    for (String str2 : values) {
        if (str1.compareTo(str2) < 0) {
            System.out.println(String.format("unique pair: (%s, %s)", str1, str2));
            // or whatever you want but do not modify map here!
        }
    }
}

 类似资料:
  • 我想在HashMap中搜索重复项。目前这是我的HashMap:

  • 我有一个HashMap,一个键作为某个类的对象,一个值作为另一个HashMap,它的键是一个字符串,值是一个双倍: 我需要一个循环,将键(对象)和值(HashMaps)添加到这个HashMap,但我不能在循环中创建一个新的HashMap变量作为它的值。本质上,每个MyClass对象都必须具有具有相应Double的Strings。 这可能吗?这有什么意义吗??

  • 我正在尝试迭代作为参数传递给jrxml的<code>HashMap</code>的值,在<code>HashMap</code>中,这些值作为<code>List</code>传递。 例 我如何在jasper report Jr XML中迭代这些< code>List?

  • 问题内容: 我需要遍历for循环的每次迭代的值集,但仅对于第一次迭代,它可以正常工作。此后返回。 我很清楚这种行为。 一种解决方案是在for循环中调用方法,因此对于每个for循环迭代,都会对其进行初始化。但这是非常无效的方法,因为它是独立的。 我尝试了此方法,但由于它仅包含参考,因此也无法正常工作。 有什么方法可以将迭代器复制到另一个或其他更好的方法中? 问题答案: An 是可能的最小API,可以

  • 这么低的方法如下,有更好的建议吗?

  • 问题内容: 今天早些时候,我需要一次遍历2个字符的字符串,以解析格式如下的字符串(有一些额外的字母)。 我最终完成了这个工作,但是看起来很丑。我最终评论了它在做什么,因为它感觉不太明显。几乎看起来像是pythonic,但并非完全如此。 有一些更好/更清洁的方法可以做到这一点吗? 问题答案: 邓诺关于清洁剂,但还有另一种选择: 无副本版本: