我试图将我的Object []数组映射并过滤到int []数组。如果对象是int,则工作得很好,但如果没有,则抛出强制转换异常。我想知道我是否能以某种方式在lambda表达式中附加try / catch?这是我的代码:
b[i] = Arrays.stream(item).mapToInt(e -> (int) e).filter(e -> e % 2 != 0).toArray();
或更好的方法是尝试/捕获整个块?
答案 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();