是否有一个实用方法可以在一行中执行此操作?我无法在任何地方找到它Collections
,或者List
.
public ListstringToOneElementList(String s) { List list = new ArrayList (); list.add(s); return list; }
除非我打算在上面放上花哨的轮辋,否则我不想重新发明轮子.
嗯......类型可以T
,而不是String
.但你明白了.(所有空检查,安全检查......等)
List
最简单的方法,我知道的,是创建一个固定大小的单个元素List
与Arrays.asList(T...)
像
// Returns a List backed by a varargs T. return Arrays.asList(s);
List
如果它需要大小不同,你可以构建一个ArrayList
固定大小的List
像
return new ArrayList<String>(Arrays.asList(s));
(在Java 7+中)你可以使用菱形算子<>
来制作它
return new ArrayList<>(Arrays.asList(s));
使用Java 8 Streams:
Stream.of(object).collect(Collectors.toList())
或者如果你需要一套:
Stream.of(object).collect(Collectors.toSet())
您可以使用实用程序方法Arrays.asList
并将结果提供给新的ArrayList
.
List<String> list = new ArrayList<String>(Arrays.asList(s));
其他选择:
List<String> list = new ArrayList<String>(Collections.nCopies(1, s));
和
List<String> list = new ArrayList<String>(Collections.singletonList(s));
ArrayList(Collection)
构造函数.
Arrays.asList
方法.
Collections.nCopies
方法.
Collections.singletonList
方法.
使用Java 7+,您可以使用"diamond operator",替换new ArrayList<String>(...)
为new ArrayList<>(...)
.
Java 9
如果您使用的是Java 9+,则可以使用以下List.of
方法:
List<String> list = new ArrayList<>(List.of(s));
无论上述每个选项的使用如何,new ArrayList<>()
如果您不需要列表是可变的,您可以选择不使用包装器.
Collections.singletonList(object)
此方法创建的列表是不可变的.
非常简单:
Arrays.asList("Hi!")
另一个回答全部使用Arrays.asList()
,返回一个不可修改的列表(UnsupportedOperationException
如果您尝试添加或删除元素,则抛出该列表).要获得一个可变列表,您可以将返回的列表包装成一个新的,ArrayList
如同几个答案所指出的那样,但更简洁的解决方案是使用Guava的 Lists.newArrayList()(自2011年发布以来至少可用于Guava 10).
例如:
Lists.newArrayList("Blargle!");
看到Guava被提及时,我想我也建议使用Eclipse Collections(以前称为GS Collections)。
以下示例均返回List
带有单个项目的。
Lists.mutable.of("Just one item"); Lists.mutable.with("Or use with"); Lists.immutable.of("Maybe it must be immutable?"); Lists.immutable.with("And use with if you want");
其他集合也有类似的方法。