gpt4 book ai didi

java - 任何集合类型的列表,也具有通用数据类型

转载 作者:行者123 更新时间:2023-12-01 12:15:22 25 4
gpt4 key购买 nike

我正在尝试修改下面的类,以便其函数接受集合中的任何数据,这些集合的数据类型也是通用的,从而实现最大程度的灵 active :

public class Container<E> {
List<E> cont;
public Container() {
cont = new java.util.LinkedList<T>();
}
void add(E item) {
cont.add(item);
}
public E remove() {
return cont.remove(0);
}
void addMulti(List<E> items) {
for (E elem : items) {
cont.add(elem);
}
}
void removeMulti(int x, List<E> items) {
for (E elem : cont.subList(0, n)) {
items.add(elem);
}
for (int i=0; i<x; ++i) cont.remove(0);
}
}

我试图让 List 使用通配符接受多种类型,例如:

 List<?> //Right?? 

此外,addAll和removeAll函数应该接受任何类型的列表作为参数,而不仅仅是列表,不能像这样:

Collection<?> //Correct???

谢谢!

最佳答案

对于addMulti ,您不想接受 Collection<?> ,因为你不能正确地说它包含与 E 兼容的元素。为了获得最大的通用性,您可以接受 Collection<? extends E> ,这表示该集合包含 EE 的某个子类.

void addMulti(Collection<? extends E> items) {...}

对于removeMulti ,是的,您可以接受 Collection<?> ,因为如果集合中某些元素的类型与 E 不兼容,它根本不会被删除。

void removeMulti(int x, Collection<?> items) {...}

但是,如果您在 removeMulti 中采用通配符集合,您将无法添加到 items 。 (我不太明白你的代码应该在那里做什么。)

就是这样 Collection#addAll Collection#removeAll 已定义。

关于java - 任何集合类型的列表,也具有通用数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27052384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com