空数组为空列表

时间:2014-12-03 09:45:30

标签: java arrays collections

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

Arrays.asList(null); //NullPointerException.

其实我正在做

 List list = possibleNullArray != null ? Arrays.asList(possibleNullArray) : Collections.EMPTY_LIST;

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

你会如何解决这个问题?

3 个答案:

答案 0 :(得分:35)

您可以使用Java 8 Optional

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

答案 1 :(得分:15)

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

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

SomeObject[] array = ArrayUtils.nullToEmpty(possiblyNullArray);

答案 2 :(得分:13)

您可以使用Java 8 OptionalStream

Optional.ofNullable(possibleNullArray)
        .map(Arrays::stream)
        .orElseGet(Stream::empty)
        .collect(Collectors.toList())