我正在尝试使用java.util.LinkedList
来获取链表并将其以某种方式更改为循环链表。
是否有可能将最后一个元素的下一个设置为第一个(因为这可以在自制的链接列表中完成)?
如果没有,请向我建议另一种实现目标的方法。
答案 0 :(得分:1)
否,您无法生成通告LinkedList
。通告LinkedList
无法实现自己的API。例如,如果列表没有结尾,LinkedList.add
将如何工作?
您确定了解决方案:实现自己的链表。
答案 1 :(得分:1)
您不能使用LinkedList,但是可以实现自己的解决方案。 例如,您可以只创建包含列表的类并声明您自己的API来使用它。例如
public static class CircularList<T> implements Iterable<T> {
private LinkedList<T> list = new LinkedList<>();
public void add(T num) {
list.add(num);
}
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
int idx = 0;
@Override
public boolean hasNext() {
return true;
}
@Override
public T next() {
if (list.isEmpty()) {
throw new RuntimeException();
}
if (idx + 1 < list.size()) {
return list.get(++idx);
}
idx = 0;
return list.get(0);
}
};
}
}
这是循环列表的简单实现。