java - 有没有一种方法可以操作通用类型的集合?

标签 java collections set

我有一个方法可以对某种形式的集合执行操作。但是,是否可以扩展运行该方法的集合类型的数量? 我指的不是 ArrayList 等通用集合,而是该方法适用于 ArrayList、数组、集合、集合、哈希表吗?

最佳答案

虽然您无法直接扩展该方法来支持您提到的其他类型,但您可以从 API 的角度通过重载方法来实现这一点。例如,如果您实现一个方法来处理所有集合:

public <T> void processData(Collection<T> data) { ... }

这适用于所有实现Collection的类型。您可以为每种不是 Collection 的类型重载此方法。例如:

public <T> void processData(T[] data) {
    processData(Arrays.asList(data));
}

在此示例中,您也重复使用处理数组的 Collection 结构的相同方法。每种不实现Collection或数组的类型都需要另一个专门的重载方法,将其转换为Collection,或更可能的是,在一个这样才有意义。

最后,通过重载方法,可以调用同名方法,传入多种类型。因此,从 API 的角度来看,您看起来总是在调用相同的方法:

Collection<String> coll = new ArrayList<String>();
int[] arrayOfInts = new int[10];

// You can call processData on both of these types now
processData(coll);
processData(arrayOfInts);

关于java - 有没有一种方法可以操作通用类型的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256449/

相关文章:

Java Elasticsearch : Search term like

尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类

java - EJB 异常 : Failed to acquire the pool semaphore

java - 如何从 List<Object> 最佳实践中计算总和 Object.get Item()?

ruby-on-rails - 使空白参数[]为零

python - 如何初始化代码中的 set() 以编译为 pypy 的 rpython?

java - 整理 JUnit 4 动态套件的详细信息

collections - 有没有一种 Smalltalk 方法来转置数组?

python - 从 python 中的元组或集合列表中查找不相交的集合

python - 获取两个列表之间的差异