将对象数组映射到Int数组

时间:2017-02-15 10:23:10

标签: java java-8

我试图将我的Object []数组映射并过滤到int []数组。如果对象是int,则工作得很好,但如果没有,则抛出强制转换异常。我想知道我是否能以某种方式在lambda表达式中附加try / catch?这是我的代码:

b[i] = Arrays.stream(item).mapToInt(e -> (int) e).filter(e -> e % 2 != 0).toArray();

或更好的方法是尝试/捕获整个块?

2 个答案:

答案 0 :(得分:5)

Wy不会过滤整数对象吗?

.filter(i -> i instanceof Integer).mapToInt(e -> (int) e)

答案 1 :(得分:3)

使用filter()删除非数字值,然后转换为Number并调用intValue()方法。

int[] ints = Arrays.stream(objects)
    .filter(Number.class::isInstance)
    .map(Number.class::cast)
    .mapToInt(Number::intValue)
    .toArray();