7

我想java.util.LinkedList<Integer>使用可用的方法来反转 a。
查看提供的方法,Iterators我看不到以下选项:

int i = list.size();  
int pos = 0;  
while(i-- > 1){  
     Integer n = list.removeLast();  
     list.add(pos++, n);          
} 

但肯定有更好的方法。我的意思是在迭代器之外修改列表不是一个好主意,但我不知道如何在此处使用它而不必创建新列表。
有没有更好的办法?

4

4 回答 4

19

使用导入 java.util.Collections;

Collections.reverse(list);
于 2012-04-23T09:28:37.227 回答
3

有一个 api 方法。

Collections.reverse(yourList);

请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#reverse%28java.util.List%29

如果出于某种原因您想自己做,这似乎是最好的方法:

List<T> reversed = new LinkedList<T>();
while(!yourList.isEmpty()) reversed.add(yourList.removeLast());
于 2012-04-23T09:29:52.470 回答
2

java.util.Collections.reverse(List list)

于 2012-04-23T09:29:06.293 回答
0

我们可以通过这些方式在java中反转Linkedlist

  1. 使用集合 - 我们可以借助集合的 ​​reverse() 方法在 Java 中反转列表

    LinkedList<String> linkedList = new LinkedList<String>();
    linkedList.add("Mumbai");
    linkedList.add("Delhi");
    //print linkedlist
    //Reverses the order of the elements in the specified list.
    Collections.reverse(linkedList);
    
  2. 使用 List.set() 方法我们将 list 的元素首先交换到 end 。依此类推,使用以下逻辑

        for(int i = 0, mid = list.size()/2, j = list.size() - 1; i < mid; i++, j--)
               list.set(i, list.set(j, list.get(i)));//swap element
         }   
    

参考: 如何反转 LikedList 的元素

于 2021-02-11T17:38:40.817 回答