创建一个列表,添加一个元素并在一个语句中将其返回给调用者

时间:2014-11-10 15:55:58

标签: java list

有没有办法创建一个列表并添加一个元素并在一个语句中返回结果列表?

return new ArrayList<Email>().add(email); 

以上原因并不明显。谢谢。

1 个答案:

答案 0 :(得分:9)

固定大小的解决方案

尝试:

return Arrays.asList(email);

请注意,返回的列表将是固定大小。引自javadoc

  

返回由指定数组支持的固定大小的列表。此方法与Collection.toArray()结合使用,充当基于数组的API和基于集合的API之间的桥梁。返回的列表是可序列化的,并实现RandomAccess

因此,您可以更改返回的List中的元素,但不能执行更改其大小的操作。

见这个例子:

String email = "as@as.com";
List<String> list = Arrays.asList(email);

list.set(0, "bs@bs.com"); // OK
list.clear();             // throws UnsupportedOperationException
list.add("cc@cc.com");    // throws UnsupportedOperationException

一般解决方案

如果您需要使返回的列表完全可修改,您仍然可以在一行中执行:

return new ArrayList<>(Arrays.asList(email));

因此,基本上只需创建一个使用Arrays.asList()创建的固定大小列表初始化的新ArrayList。虽然这对于如何创建具有一个元素的List并非如此惯用,但它解决了您的问题。