使用.map和.collect方法时,如何忽略ArrayIndexOutOfBoundsException:0?

时间:2018-11-06 23:25:20

标签: java

我想忽略ArrayIndexOutOfBoundsException:0。如果port1 [1]不为空,我想走得更远。

if (port1[1] != null){
    String[] inputArray1=port1[1].split(",");

    Map meInputs1 = Stream.of(inputArray1)
                          .map(s -> s.split(":",2))
                          .collect(Collectors.groupingBy(s -> s[0],  
                                   Collectors.mapping(s -> s[1], 
                                   Collectors.toList()))); 
    }

我在代码的第一行出现此错误

java.lang.ArrayIndexOutOfBoundsException: 0

如果我指向的项目为空,如何跳过此步骤?

1 个答案:

答案 0 :(得分:2)

通过添加条件逻辑以防止其发生,您可以“忽略ArrayIndexOutOfBoundsException:0”

在这种情况下,这意味着您要检查s.split(":",2)的结果是否为2个值的数组,如果不是,则忽略/跳过。您可以通过致电filter()来做到这一点:

Map<Object, List<Object>> meInputs1 = Stream.of(inputArray1)
        .map(s -> s.split(":",2))
        .filter(s -> s.length >= 2) // ignore entries in inputArray1 without a ':'
        .collect(Collectors.groupingBy(s -> s[0],
                 Collectors.mapping(s -> s[1],
                 Collectors.toList())));