空数组为空列表

Eze*_*iel 21 java arrays collections

Arrays.asList(E[] e)将数组视图作为a返回List,但是当数组为null时,它会抛出一个NullPointerException.

Arrays.asList(null); //NullPointerException.
Run Code Online (Sandbox Code Playgroud)

其实我在做

 List list = possibleNullArray != null ? Arrays.asList(possibleNullArray) : Collections.EMPTY_LIST;
Run Code Online (Sandbox Code Playgroud)

但是,仅为此目的在我的项目中创建一个Utility类是我不想做的事情.是否有一些实用程序类或像Apache Commons或Guava这样的库将null数组转换为空List?(即数组和集合之间的零安全转换器).

你会如何解决这个问题?

Era*_*ran 37

您可以使用Java 8 Optional:

String[] arr = null;
List<String> list = Arrays.asList(Optional.ofNullable(arr).orElse(new String[0]));
Run Code Online (Sandbox Code Playgroud)


Pet*_*ček 16

我不知道Apache Commons/Guava中的任何util方法会List从null 创建一个空实例.

你可能做的最好的事情是事先初始化可能为null的数组,例如ArrayUtils.nullToEmpty().尽快摆脱空值.

SomeObject[] array = ArrayUtils.nullToEmpty(possiblyNullArray);
Run Code Online (Sandbox Code Playgroud)


Nic*_*aux 13

您可以使用Java 8 OptionalStream

Optional.ofNullable(possibleNullArray)
        .map(Arrays::stream)
        .orElseGet(Stream::empty)
        .collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)