有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

for循环是否可以在Java中组合两个迭代?

在Java中这样组合迭代器合法吗

for(int key : someMap.KeySet() && double value : someMap.values()) {
    //do something
}

这是我在别的地方找不到的。我将亲自测试,但是如果有人能帮我省力,并且马上知道这一点,我将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    不,foreach循环在Java中不是这样工作的。为什么必须循环使用Map值?您可以直接获取给定键的值:

    for(Integer key : someMap.keySet()) {
        Double value = someMap.get(key);
    
        //do something
    }
    

    或者更好的是,在Map的条目Set上迭代:

    for(Map.Entry<Integer, Double> entry : someMap.entrySet()) {
        Integer key = entry.getKey();
        Double value = entry.getValue();
    
        //do something
    }
    

    或者,如果您真的想对这两种方法进行迭代,可以手动使用迭代器:

    Iterator<Integer> keyIterator = someMap.keySet().iterator();
    Iterator<Double> valueIterator = someMap.values().iterator();
    
    while(keyIterator.hasNext() && valueIterator.hasNext()) {
        Integer key = keyIterator.getNext();
        Double value = valueIterator.getNext();
    
        \\ do stuff
    }
    
  2. # 2 楼答案

    几乎可以肯定的是,您希望像这样在MapentrySet()上进行迭代

    for(Map.Entry<Integer, Double> entry : map.entrySet()) {
       int key = entry.getKey();
       double value = entry.getValue();
       // do whatever with key, value
    }
    

    但无论如何,在Java8中,您可以

    map.forEach((key, value) -> {
      // do whatever with key and value
    });
    
  3. # 3 楼答案

    你需要在someMap.entrySet()上迭代,以实现你在问题中所勾画的内容。通过这种方式,您可以在一次迭代中访问每个条目(包装在Map.Entry<Integer, Double>对象中)的键和值