Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空列表的空数组_Java_Arrays_Collections - Fatal编程技术网

Java 空列表的空数组

Java 空列表的空数组,java,arrays,collections,Java,Arrays,Collections,Arrays.asList(E[]E)将数组的视图返回为列表,但当数组为null时,它会抛出一个NullPointerException Arrays.asList(null); //NullPointerException. 实际上我正在做 List list = possibleNullArray != null ? Arrays.asList(possibleNullArray) : Collections.EMPTY_LIST; 然而,在我的项目中仅为此目的创建实用程序类是我不愿意

Arrays.asList(E[]E)
将数组的视图返回为
列表
,但当数组为null时,它会抛出一个
NullPointerException

Arrays.asList(null); //NullPointerException.
实际上我正在做

 List list = possibleNullArray != null ? Arrays.asList(possibleNullArray) : Collections.EMPTY_LIST;
然而,在我的项目中仅为此目的创建实用程序类是我不愿意做的事情。是否有一些实用程序类或库(如ApacheCommons或Guava)可以将空数组转换为空
列表
?(即数组和集合之间的空安全转换器)


您将如何解决此问题?

您可以使用Java 8
可选的

String[] arr = null;
List<String> list = Arrays.asList(Optional.ofNullable(arr).orElse(new String[0]));
String[]arr=null;
List List=Arrays.asList(可选的.ofNullable(arr.orElse)(新字符串[0]);

我不知道Apache Commons/Guava中有任何util方法会在null中创建一个空的
列表
实例

您可以做的最好的事情可能是预先初始化可能为空的数组,例如使用。尽快清除空值

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

您可以使用Java 8
可选

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

当然,如果将其设置为null,则会得到NPE,Arrays.asList();如果我没有弄错的话,将对象转换为array/arraylist/array的列表。在考虑可读性的情况下,使用零长度数组的空集合而不是空集合是一个很好的做法。我没有讨论Array.asList(null)抛出NullPointerException的原因。这是创造者的设计决定。我询问一个实用程序类或库将null ARRAS O集合转换为空数组或集合。请,如果你投票失败,考虑给出一个理由。谢谢。
Arrays.asList()
和其他类似方法,例如
新建ArrayList(…)
不应抛出NPE如果传入集合为
null
,则应返回空列表。在这种情况下抛出一个NPE是非常荒谬的。另外,您还有原始
列表。我希望您的代码实际上是泛化的。在新代码中没有放置原始集合的位置。在Java7上,也可以使用番石榴的
可选
。或者相同的概念使用不同的代码-Guava的
Objects.firstNonNull()