我对您有一个问题,我正在尝试使用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;
}
}
答案 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));
}
}