current.item = item;
Node<T> nextNode = new Node<T>();
current.next = nextNode;
current = nextNode;
当前:Bag$Node@1786F9D5下一个:Bag$Node@704D6E83
看起来很清楚,至少在我看来,下一个节点每次都会设置一个新节点。我将所有四个元素都添加到包中,但条目丢失,并为每个索引返回null。toArray()函数显示[null,null,null,null]
我敢肯定这是一件简单得让人眼花缭乱的事情。下面是整个实现。
import java.util.Iterator;
public class Bag<T> implements Iterable<T> {
private Node current;
//Node<T> head;
private int numberofProducts;
T[] myBag;
int defaultCapacity;
public Iterator<T> iterator() {
return new ListIterator<T>(current);
}
public Bag(int defaultCapacity) {
this.current = new Node<T>();
this.numberofProducts = 0;
this.defaultCapacity = defaultCapacity;
}
public void add(T item) {
if(isFull()) {
System.out.println("bags full, yo");
return;
}
current.item = item;
Node<T> nextNode = new Node<T>();
current.next = nextNode;
current = nextNode;
numberofProducts++;
//Node<T> nextNode = current;
//current = new Node<T>();
//current.item = item;
//current.next = nextNode;
//numberofProducts++;
}
public Object[] toArray() {
Object[] array = new Object[size()];
int i = 0;
Node<T> node = current;
//Node<T> node = head;
while(node.next != null) {
array[i] = node.item;
node = node.next;
i++;
}
return array;
}
public boolean isEmpty() {
return this.numberofProducts <= 0;
}
public boolean isFull() {
return this.numberofProducts >= defaultCapacity;
}
public int size() {
return this.numberofProducts;
}
private class Node<T> {
private T item;
private Node<T> next;
}
private class ListIterator<T> implements Iterator<T> {
private Node<T> current;
public ListIterator(Node<T> first) {
current = first;
}
public boolean hasNext() {
return current != null;
}
public T next() {
if(hasNext()) {
T item = current.item;
current = current.next;
return item;
}
return null;
}
public void remove() {
}
}
}
我试图以正确的顺序返回一个迭代器来处理单链表中的元素,但我无法使其正确工作。有没有一个简单的方法来完成这件事,因为我想我想得太多了。顺便说一下,这是在Java,我已经导入了迭代器包。
本文向大家介绍Java单链表的实现代码,包括了Java单链表的实现代码的使用技巧和注意事项,需要的朋友参考一下 下面是小编给大家分享的一个使用java写单链表,有问题欢迎给我留言哦。 首先定义一个Node类 接下来定义一个单链表,并实现相关方法: 最后我们可以通过测试类来做相关测试: 至此,对单链表的操作就笔记到这里了。 以上所述是小编给大家介绍的Java单链表的实现代码,希望对大家有所帮助,如果
我目前正在学习数据结构考试,遇到了一个关于迭代的问题。 在单链表上实现双向迭代器是可能的吗?如果是的话,如何实施呢? 我有一个想法,首先向前遍历链表,并存储一个临时链表,该临时链表保存反向的节点。但是遍历这个临时列表将导致一个只允许向后遍历的迭代器。
问题内容: 如果我在java中的链表上使用了for-each循环,是否可以保证以它们在列表中出现的顺序迭代元素? 问题答案: 保证链表按顺序运行。 从文档中 有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 iterator() 以适当的顺序返回此列表中元素的迭代器。
问题内容: 什么是迭代器和集合?这两个有关系吗? 接口迭代器是否只预定义了这些方法名称,还是用户定义了这些方法名称?下面的这四行实际上说明了什么? 谢谢。我正在看一本藏书。 问题答案: 顾名思义,Java集合是事物的集合。如果您不知道该单词,请在字典中查找。 有很多类型的集合。以集合的数学概念为例。您可以将任意事物放入集合中,但是永远不会包含同一事物。在集中的东西是没有顺序的,那就是你不能说 A
本文向大家介绍PHP单链表的实现代码,包括了PHP单链表的实现代码的使用技巧和注意事项,需要的朋友参考一下 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 单链表简介 链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 关键代码如下所示: 以上所述是小