如何在 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>