用于在集合中包装对象的实用工具方法

2022-09-01 03:35:27

我正在寻找Java核心库或其他一些常用依赖项(最好是Apache中的一种)中的静态方法,它可以执行以下操作:

public static <T> Collection<T> wrap(final T object){
    final Collection<T> collection = new ArrayList<T>();
    collection.add(object);
    return collection;
}

您知道这种方法已经存在的地方吗?由于我想这个问题很常见,我不想重复它的解决方案。


答案 1

java.util.Collections.singleton(object)会给你一个不可变的. 也可用。SetsingletonList

效率较低会给你一个可变的(可以使用),但结构上是不可改变的(不能添加或删除)。它有点贵,因为有一个额外的数组是在客户端创建的。java.util.Arrays.asList(object)list.set(0, x);List


答案 2

以下是一些将 Java 对象包装在 List 中的有效方法,从 Java 8 开始。

收集。单例列表:单个项目,不可变,自 1.3 起。

由内部类支持的高性能。Collections.singletonList( object )

收集。nCopies:一个对象, 1.2 开始,从 1.2 开始,从 0 到多个项目,不可变。

由内部类支持的高性能。所有项目都指向同一对象。Collections.nCopies( number_of_copy, object )

数组。asList:任意数量的对象,大小不可变(单个元素可变),自 1.2 起。

由内部类支持。项在编译时转换为数组,此数组直接支持 List。Arrays.asList( object1, object2, object3 )

新的 ArrayList(集合):任意数量的可变对象,因为 1.2

ArrayList 是使用数组克隆数组副本创建的,因此不使用任何循环。new ArrayList<>( Arrays.asList( object1, object2, object3 ) )