【发布时间】:2022-01-01 07:15:26
【问题描述】:
我尝试创建一个手动的 LinkedList 类,然后我创建了一个函数来合并两个 LinkedList。我为我的 LinkedList 类实现了 iterable 以使用 foreach 循环,但是出了点问题。我不知道如何重写 iterator() 函数来解决问题。这是我的代码:
Node.javapackage app;
public class Node<R> {
private R Data;
private Node<R> nextNode;
public final void setData(R data) {
Data = data;
}
public R getData() {
return Data;
}
public void setNextNode(Node<R> nextNode) {
this.nextNode = nextNode;
}
public Node<R> getNextNode() {
return nextNode;
}
public Node(R dR){
this.setData(dR);
}
}
LinkedList.java
package app;
import java.util.Iterator;
public class LinkedList<R> implements java.lang.Iterable<R>{
private Node<R> headNode;
public void addNode(Node<R> nR){
if(headNode == null){
headNode = nR;
} else {
nR.setNextNode(headNode);
this.headNode = nR;
}
}
public void addData(R dR){
Node<R> nR = new Node<>(dR);
addNode(nR);
}
public LinkedList(){
headNode = null;
}
@Override
public Iterator<R> iterator() {
return null;
}
}
App.java
package app;
public class App {
public static <R>LinkedList<R> unionLinkedList(LinkedList<R> list , LinkedList<R> list2){
LinkedList<R> unionLinkedList = new LinkedList<>();
for (R dR : list) {
unionLinkedList.addData(dR);
}
for (R dR : list2) {
unionLinkedList.addData(dR);
}
return unionLinkedList;
}
public static void main(String[] args) throws Exception {
LinkedList<Integer> list = new LinkedList<>();
LinkedList<Integer> list2 = new LinkedList<>();
list.addData(3);
list.addData(9);
list.addData(8);
list2.addData(11);
list2.addData(5);
list2.addData(7);
LinkedList<Integer> u = unionLinkedList(list, list2);
}
}
我知道我必须将return null; 更改为iterator(),但我不知道应该用什么替换它。
【问题讨论】:
-
我相信你需要定义一个新的类ListIterator
,它有方法“boolean hasNext()”和“R getNext()”方法,然后有你的“iterator()”方法返回 ListIterator 的一个实例。
标签: java linked-list iterator iterable