是否有一个实用方法,可以在1行完成这个?我在收藏或列表中都找不到它。

public List<String> stringToOneElementList(String s) {
    List<String> list = new ArrayList<String>();
    list.add(s);
    return list;
}

我不想重新发明轮子,除非我打算把花哨的轮辋上。

嗯…类型可以是T,而不是String。但你懂的。(所有的空检查,安全检查…等)


当前回答

看到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");

其他集合也有类似的方法。

其他回答

使用Java 8流:

Stream.of(object).collect(Collectors.toList())

或者如果你需要一组:

Stream.of(object).collect(Collectors.toSet())

其他答案都使用Arrays.asList(),它返回一个不可修改的列表(如果您试图添加或删除一个元素,将抛出UnsupportedOperationException)。要获得一个可变列表,你可以将返回的列表包装在一个新的数组列表中,但一个更干净的解决方案是使用Guava的Lists.newArrayList()(至少从2011年发布的Guava 10开始可用)。

例如:

Lists.newArrayList("Blargle!");

非常简单:

Arrays.asList("Hi!")
Collections.singletonList(object)

此方法创建的列表是不可变的。

固定尺寸

据我所知,最简单的方法是使用Arrays.asList(T…)创建一个固定大小的单元素列表

// Returns a List backed by a varargs T.
return Arrays.asList(s);

可变大小列表

如果它的大小需要变化,你可以构造一个数组列表和固定大小的列表

return new ArrayList<String>(Arrays.asList(s));

并且(在Java 7+中)您可以使用菱形操作符<>来创建它

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

单元素列表

集合可以返回一个包含单个元素且list为不可变的列表:

Collections.singletonList(s)

这样做的好处是ide代码分析不会对单个元素的asList(..)调用发出警告。