如何在java中从头开始创建addAll()或addRange()方法?
我正在尝试做一个链接列表,我明确要求创建一个链接列表和一些派生类型,比如队列和堆栈,这只是一些大学作业,而且我意识到如何创建一个节点类和链表类,但我努力在这个链表类中创建addAll()方法,这就是我所拥有的。
如果我必须打赌,我说是收藏c一个,但是,然后,我试图添加的东西列表,为了将他的内容传递到新列表,obiusly没有准备好,并且obiusly不起作用。
你能告诉我如何通过某种“原始列表”以便将它们的数据传递到新列表中?
(我知道我必须使用一些for(对象),但我没有通过参数传递一些数据,这将是放在那里的正确参数?)
public boolean addAll(Collection c) {
for (int i = 0; i < (this.listaNodos.size()); i++) {
//for (T someT : c){
// Node newNodo = new Node(someT);
//}
//i know the one down there is not gonna do anything, because
//i'm not accesing the data, but one problem at a time would ya ;)
Node newNodo = new Node(someT);
Node actualNodo = this;
boolean processFinished = false;
try{
if(index >= this.listaNodos.size() || index < 0){
throw new IndexOutOfBoundsException();
}
do{
if(index == actualNodo.getIndex())
{
actualNodo.setData(someT);
processFinished = true;
return true;
}
else
{
actualNodo = actualNodo.nextNode;
}
}while(!processFinished);
return false;
}catch(IndexOutOfBoundsException ex)
{
throw ex;
}
}
return false;
}
你能告诉我如何解决它,使其工作?
任何澄清,建设性评论或问题的要求也会大大降低。
提前致谢
我假设你已经有一个add()
方法的某种权利? 如果是这样,你可以检查c
每个元素,并使用add方法添加它:
public boolean addAll(Collection<T> c) {
boolean changed = false;
for (T t:c) {
changed |= this.add(t);
}
return changed;
}
我假设返回的布尔值表示该列表是否已更改,这是如何在Collection
合同中定义的:https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html #addAll(java.util.Collection中)。
你也添加了一个通用类型,所以我添加了一个。 我假设你的类定义看起来像这样?
public class MyLinkedList<T>
链接地址: http://www.djcxy.com/p/73921.html
上一篇: How to make an addAll() or addRange() method from scratch in java?