使用IntStream将Java int数组添加到HashMap <integer,boolean =“”>

时间:2016-07-07 18:12:24

标签: java java-stream

我需要取每个数组元素的平方并将一个条目插入到hashmap中,并将此值作为键,并将true作为值。我试过这样做,但我无法解决它。

int [] array = {3, 1, 4, 6, 5};

    HashMap<Integer, Boolean> map = IntStream.of(array)
            .map(x -> x*x)
            .collect(Collectors.toMap(p -> Integer.valueOf(p), Boolean.valueOf(true)));

2 个答案:

答案 0 :(得分:4)

您可以box IntStream并继续Stream<Integer>

Map<Integer, Boolean> map = IntStream.of(array)
        .map(x -> x*x)
        .boxed()
        .collect(Collectors.toMap(p -> p, p -> Boolean.valueOf(true)));

请注意,Collectors.toMap会返回Map,而不是HashMap

答案 1 :(得分:0)

`你可以使用一个简单的循环

int [] array = {3,1,4,6,5};

HashMap<Integer, Boolean> map = new HashMap<Integer, Boolean>();

for(int i : array) {
   map.put(i*i, true);
}