在不同的网站上,我一直在寻找java中反转订单的程序 链表(单链表和双链表)。我登陆了不同的网站,如
1)http://geek-o-pedia.blogspot.com/2007/07/how-would-you-reverse-singly-linked.html 2)http://stackoverflow.com/questions/354875/reversing-a-linked-list-in-java-recursively
PointA-根据我的理解,当您将链接列表编写为时,这些程序(参见链接1)是很好的 程序假设我们可以访问我们不能访问的Node类(因为它是Linked List中的私有内部类。)
B点 - 除此之外,该程序将永久性地反转Source链表的顺序。所以当我们迭代这个时 我们总是以相反的顺序获得元素。
如果上述两点都正确,请告诉我
所以我试着自己动手
- 撤销单一链接列表
LinkedList list1 = new LinkedList();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);
LinkedList reverseList1 = new LinkedList();
int size= list1.size();
// below loop will revrse the order of source linked list i.e list1
for(int i =size-1;i>=0;i--)
{
reverseList1.add(size-i-1, list1.get(i));
}
只是想确保上述方法是否正确,因为我在互联网上找不到这些方法,我觉得非常简单。无论何时我都能找到类似于link1和link2的方法
也发布在https://forums.oracle.com/forums/thread.jspa?threadID=2271413&tstart=0,但没有得到正确答案。
答案 0 :(得分:1)
您是否尝试过使用其中任何一种?
Collections.sort(list, Collections.reverseOrder(cmp));
or
Collections.reverse(list);
答案 1 :(得分:1)
这似乎可以正常工作。但是,add
方法不需要第一个参数 - 最后添加已插入(并且您也可以使用相同的addLast
。
此外,多次使用get(i)
效率不高。我会遍历第一个列表(使用foreach或使用迭代器 - 以及每个元素调用addFirst
。
或者,像panzerschreck建议的那样使用Collections.reverse
,这确实是IMO的最佳方式。