如何从映射保存整数以使用for循环

时间:2019-01-02 17:04:51

标签: java arrays dictionary

我对您有一个问题,我正在尝试使用for循环将整数从map保存到数组。下面的示例无法正常运行,因为当我显示该整数数组时,它仅对10个元素具有'2',但是我想获取[1,2,0,0,0,0 ...],该代码应更改什么?

Map<Integer, String> fooMap = new HashMap<>();
fooMap.put(1, "AB");
fooMap.put(2, "BBA");

int[] arrayOfIntegers = new int[10];

for (Map.Entry<Integer, String> values : fooMap.entrySet()) {
    int val = values.getKey();
    System.out.println(val);
    for (int index = 0; index < arrayOfIntegers.length; index++) {
        arrayOfIntegers[index] = val;
    }
}

3 个答案:

答案 0 :(得分:1)

在循环的每次迭代中,您将覆盖整个数组。您可以将数组的索引保存在循环之外,然后使用它来更新数组:

int index = 0;
for (Integer val: fooMap.keySet()) {
    arrayOfIntegers[index] = val;
    ++index;
}

答案 1 :(得分:0)

您可以使用流:

int[] arrayOfIntegers = fooMap.keySet().stream()
                              .mapToInt(k->k).toArray();

答案 2 :(得分:0)

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class stack1 {
 public static void main(String[] args) {
     Map<Integer, String> fooMap = new HashMap<>();
     fooMap.put(1, "AB");
     fooMap.put(2, "BBA");

     int memoryAllocated = 10;
     int[] arrayOfIntegers = new int[memoryAllocated];
     int pos =0;

     for (Map.Entry<Integer, String> values : fooMap.entrySet()) {
         int val = values.getKey();
         arrayOfIntegers[pos]=val;
         pos =pos+1;
     }

     while(pos < memoryAllocated){
         arrayOfIntegers[pos]=0;
         pos = pos+1;
     }

     System.out.println("Arrays : "+Arrays.toString(arrayOfIntegers));
}
}