Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse集合映射上的简单循环迭代(例如:InObjectHashMap)_Java_Loops_Foreach_Iterator_Eclipse Collections - Fatal编程技术网

Java Eclipse集合映射上的简单循环迭代(例如:InObjectHashMap)

Java Eclipse集合映射上的简单循环迭代(例如:InObjectHashMap),java,loops,foreach,iterator,eclipse-collections,Java,Loops,Foreach,Iterator,Eclipse Collections,有没有一种方法可以对映射上的每个循环使用简单Java 我正在寻找类似的东西(但对于Eclipse集合映射): for(Map.Entry:Map.entrySet()){ } 。。。但是我在Eclipse集合地图中找不到类似的东西 当然,我知道这种类型的Eclipse集合迭代: import org.eclipse.collections.impl.map.mutable.primitive.IntObjectHashMap; public class Test { public s

有没有一种方法可以对映射上的每个循环使用简单Java

我正在寻找类似的东西(但对于Eclipse集合映射):

for(Map.Entry:Map.entrySet()){
}
。。。但是我在Eclipse集合地图中找不到类似的东西

当然,我知道这种类型的Eclipse集合迭代:

import org.eclipse.collections.impl.map.mutable.primitive.IntObjectHashMap;

public class Test {
    public static void main(String[] args) {
        IntObjectHashMap<String> map = new IntObjectHashMap<>();
        map.put(1, "one");
        map.put(2, "two");
        int i = 0;
        map.forEachKeyValue((int key, String val) -> {
            i++; // Compilation error. 
            System.out.println("key: " + key + ", val: " + val);
        });
    }
}
import org.eclipse.collections.impl.map.mutable.primitive.IntObjectHashMap;
公开课考试{
公共静态void main(字符串[]args){
InObjectHashMap=新建InObjectHashMap();
地图放置(1,“一”);
图.put(2,“2”);
int i=0;
map.forEachKeyValue((int键,String val)->{
i++;//编译错误。
System.out.println(“key:+key+”,val:+val);
});
}
}
。。。但是这种构造有一些缺点,例如,我无法轻松访问周围的局部变量(如上面的示例所示,由于对局部变量
I
的访问不正确,该示例将无法编译)


有没有关于如何编写简单的Eclipse集合循环图的想法?

Hulk和Basil在评论中的建议很好。我将为您的代码提供一个测试,以供将来参考

@Test
public void keyValuesView()
{
    IntObjectHashMap<String> map = new IntObjectHashMap<>();
    map.put(1, "one");
    map.put(2, "two");
    int i = 0;
    for (IntObjectPair<String> pair : map.keyValuesView())
    {
        i++;
        System.out.println("key: " + pair.getOne() + ", val: " + pair.getTwo());
    }
    Assert.assertEquals(2, i);
}

胡克和巴兹尔在评论中的建议很好。我将为您的代码提供一个测试,以供将来参考

@Test
public void keyValuesView()
{
    IntObjectHashMap<String> map = new IntObjectHashMap<>();
    map.put(1, "one");
    map.put(2, "two");
    int i = 0;
    for (IntObjectPair<String> pair : map.keyValuesView())
    {
        i++;
        System.out.println("key: " + pair.getOne() + ", val: " + pair.getTwo());
    }
    Assert.assertEquals(2, i);
}

我还没有使用eclipse集合,但从文档中可以看出,它返回了映射中条目的Iterable(在这种情况下,作为
IntObjectPair
-实例)。应该可以在增强的for循环中使用它。它看起来非常有前途!非常感谢,Hulk.Doc:我还没有使用eclipse集合,但是从文档中可以看出,它返回了映射中条目的Iterable(在这种情况下,作为
IntObjectPair
-instances)。应该可以在增强的for循环中使用它。它看起来非常有前途!非常感谢你,绿巨人。医生:
@Test
public void forEachKeyValueWithCounter()
{
    IntObjectHashMap<String> map = new IntObjectHashMap<>();
    map.put(1, "one");
    map.put(2, "two");
    Counter counter = new Counter();
    map.forEachKeyValue((int key, String val) -> {
        counter.increment();
        System.out.println("key: " + key + ", val: " + val);
    });
    Assert.assertEquals(2, counter.getCount());
}