方法签名如下所示:
public void addThemAll(Collection<? extends T> c)
这基本上只是将集合的每个元素添加到我的LinkedList中。但我一直在尝试将此方法提供给数组或链接列表,但我总是遇到错误。例如:
double[] myarray = new double[]{3.4, 4.5, 8.6};
mylist.addThemAll(myarray);
我确信这是直截了当的,但我找不到一个只是将数组/链接列表传递给这样的方法的在线示例。
答案 0 :(得分:4)
您的代码有两个问题:
要在课堂上定义,请按以下步骤进行:
public class MyClass<T> {
// contents
}
定义&lt; T&gt;在你的方法中,这样做:
public <T> void addThemAll(Collection<? extends T> c) {
// method logic
}
答案 1 :(得分:0)
对于你正在做的事情,这将有效:
List<Double> myArray = Arrays.asList(3.4, 4.5, 8.6);
mylist.addThemAll(myarray);
原因是你传入一个列表(这是一个集合)。目前您传入的是一个不是集合的Array。
答案 2 :(得分:0)
将数组传递给集合:
Double[] myarray = new Double[]{3.4, 4.5, 8.6};
mylist.addThemAll(Arrays.asList(myarray));
如果您不希望它作为列表但希望它作为LinkedList或等
LinkedList<Double> linkedlist = new LinkedList(Arrays.asList(myarray));
mylist.addThemAll(linkedlist);
如果你想使用set或treeset
TreeSet <Double> treeset = new TreeSet(linkedlist);
集合和列表之间的区别在于集合没有重复且没有排序,列表是有序但包含重复。
传递给您的方法后:
public void addThemAll(Collection<? extends T> c)
if(c instanceof LinkedList){
LinkedList a = (LinkedList) c //you can invoke methods from LinkedList
....
}