java自定义迭代器作用_使用 Java 实现迭代器创建自定义列表。

在本文中,我们将讨论开发自定义数据结构以及如何使用 Java 创建列表。

在编写代码之前,我们需要了解一些概念。

列表:列表是一种数据结构,表示数据(节点)的集合或排列,每个节点都有指向下一个节点的指针,这意味着索引无法访问节点。下图显示了包含三个元素(节点)的列表,以及”第一个”和”最后一个”指针,以便访问列表数据。

4dc9ee9432db83fcf81b4f663a68e345.png

节点:节点是表示列表中每个元素的结构。节点至少有一个指向下一个元素的指针和一个包含特定信息或数据的字段。在具有一个元素的列表中,第一个和最后一个指针指向同一个元素。

f744a4cf5933ef077f1dd040fe089472.png

下一页,第一次,最后一个(指针): 这些是允许访问列表中的节点的指针。

空列表:没有元素的列表,”第一个”和”最后一个”节点为空。

183360f67825e1961433bd56d55e7d34.png

让我们来编码

首先 Node 类:

package app;

public class Node {

private Node next;

private Node prev;

private T data;

//getters and setters omited..

}

在 Node 类中,需要强调的要点是使用通用传递节点的数据类型并使列表可重用。

之后,我们需要实现 CustomList 类:

package app;

import java.util.Iterator;

public class CustomList implements Iterable {

private Node first;

private Node last;

public CustomList() {

first = last = null;

}

public boolean isEmpty(){

return first == null;

}

public void push(T data) {

Node tempo = new Node();

tempo.setData(data);

tempo.setNext(null);

if (first == null) {

tempo.setPrev(null);

first = last = tempo;

} else {

tempo.setPrev(last);

last.setNext(tempo);

last = tempo;

}

}

@Override

public Iterator iterator() {

return new ListIterator(first);

}

}

CustomList类实现 Iterable ,它允许我们在列表中使用”for”。

在下一步中,我们将创建自己的 ListIterator 实现:

package app;

import java.util.Iterator;

public class ListIterator implements Iterator {

private Node current;

public ListIterator(Node first) {

current = first;

}

@Override

public boolean hasNext() {

return current != null;

}

@Override

public Node next() {

Node tempo = current;

current = current.getNext();

return tempo;

}

}

需要传递构造函数中列表的第一个节点,以便根据需要使用指针(下一步,前一页)访问列表的内容。我们还必须重载 next() 和 hasNext() 方法推(新人(“克拉克”,”肯特”,35));

列表1.推(新人(“布鲁斯”,”韦恩”,40));

列表1.推(新人(“琳达”,”卡特”,30));

(节点节点 : list1) |

系统.out.println(节点.getData(toString));

}

自定义列表\lt;Car> 列表2 = 新的自定义列表\lt;>();

列表2.推(新车(200,”车1″);汽车(200,”车1″);

列表2.推(新车(100,”车2″));

(节点节点 : list2) |

系统.out.println(节点.getData(toString));

}

}

}

在上面的代码中,我们注意到我们可以用 for 结构迭代列表。

这是所有的人,我们已经实现了我们的自定义列表与Java通过 Iterator 实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值