2

有没有办法将 LinkedList 类的对象转换为循环链表。

或者是否有任何预定义的类,如 java.util 中的 CircularLinkedList 类似这样的东西(类似http://docs.oracle.com/javase/1.4.2/docs/api/java/util/LinkedList.html的东西)

任何帮助将非常感激....

提前致谢 :-)

4

2 回答 2

3

不,LinkedList 的封装方式使其无法将其尾部连接到头部。我不认为任何默认集合都支持这一点,因为那样它就不会再履行Iterable的合同了,这表明迭代器必须在某个时候到达终点。

当您需要这样的数据结构时,您必须自己实现它。

于 2012-12-25T20:12:41.110 回答
1

看看 Guava 的 Iterables.cycle 方法。

public static <T> Iterable<T> cycle(Iterable<T> iterable)

返回一个迭代器,它的迭代器在迭代器的元素上无限循环。

如果支持,该迭代器支持 remove() iterable.iterator()。调用 remove() 后,后续循环将忽略已删除的元素,该元素不再可迭代。迭代器的hasNext()方法返回 true,直到 iterable 为空。

参考文档: http: //guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Iterables.html#cycle%28java.lang.Iterable%29

于 2012-12-26T07:36:20.997 回答