如何在 java 中从头开始制作 addAll() 或 addRange() 方法?
How to make an addAll() or addRange() method from scratch in java?
我正在尝试为我的任务做一个链表,这明确要求从头开始创建一个链表和一些派生类型,如队列和堆栈,这只是一些大学作业,我意识到如何制作节点 class 和链表 class,但我正在努力在此链表 class 中创建 addAll() 方法,这就是我所拥有的。
如果我一定要打赌,我说的是 Collection c 一个,但是,我正在尝试在那里添加东西列表,以便将他的内容传递到新列表中,obiusly 还没有准备好,obiusly 也没有没用。
你能告诉我如何传递某种 "proto-list" 以便在新列表中传递数据吗?
(我知道我必须使用某种 for(objects) 但我无法通过参数传递一些数据,这将是放置在那里的正确参数?)
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).
您还缺少 add 方法的通用类型,因此我添加了一个。我假设您的 class 定义看起来像这样?
public class MyLinkedList<T>
我正在尝试为我的任务做一个链表,这明确要求从头开始创建一个链表和一些派生类型,如队列和堆栈,这只是一些大学作业,我意识到如何制作节点 class 和链表 class,但我正在努力在此链表 class 中创建 addAll() 方法,这就是我所拥有的。
如果我一定要打赌,我说的是 Collection c 一个,但是,我正在尝试在那里添加东西列表,以便将他的内容传递到新列表中,obiusly 还没有准备好,obiusly 也没有没用。
你能告诉我如何传递某种 "proto-list" 以便在新列表中传递数据吗?
(我知道我必须使用某种 for(objects) 但我无法通过参数传递一些数据,这将是放置在那里的正确参数?)
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).
您还缺少 add 方法的通用类型,因此我添加了一个。我假设您的 class 定义看起来像这样?
public class MyLinkedList<T>