㈠ 用java 拜託了 將一個數組逆序輸出
這個可以使用數組工具類Arrays的asList方法將數組變成List集合,然後使用集合工具類Collections的方法reverse方法將集合中的元素順序反轉,在將集合轉換成數組,遍歷數組列印即可。
public class Test
{
public static void main(String[] args)
{
String[] s={"a","b","c","d","e","f"};
List<String> list=Arrays.asList(s);
Collections.reverse(list);
list.toArray(s);
for(String str:s)
{
System.out.print(str+" ");
}
}
}
如果滿意,請採納謝謝。
㈡ java linked list里的元素順序反過來
定義一個LinkedList<Integer> templist = new LinkedList<>();來存儲list裡面的值,通過迭代list,將值插入在templist的頭上,那麼templist就是list的反轉了,最後將templist賦值給list就行了!
如下代碼:
publicvoidreverse(){
LinkedList<Integer>list=newLinkedList<>();
LinkedList<Integer>templist=newLinkedList<>();
inti=0;
while(i<6){
list.add(i);
i++;
}
Iterator<Integer>it=list.iterator();
intm;
while(it.hasNext()&&i>=0){
m=it.next();
templist.addFirst(m);
i--;
}
list=templist;
System.out.println(list);
}
運行結果為:
5 4 3 2 1 0
從API中可以看到List等Collection的實現並沒有同步化,如果在多線程應用程序中出現同時訪問,而且出現修改操作的時候都要求外部操作同步化;調用Iterator操作獲得的Iterator對象在多線程修改Set的時候也自動失效,並拋出java.util.。這種實現機制是fail-fast,對外部的修改並不能提供任何保證。
Iterator是工作在一個獨立的線程中,並且擁有一個 mutex鎖,就是說Iterator在工作的時候,是不允許被迭代的對象被改變的。
Iterator被創建的時候,建立了一個內存索引表(單鏈表),這個索引表指向原來的對象,當原來的對象數量改變的時候,這個索引表的內容沒有同步改變,所以當索引指針往下移動的時候,便找不到要迭代的對象,於是產生錯誤。
List、Set等是動態的,可變對象數量的數據結構,但是Iterator則是單向不可變,只能順序讀取,不能逆序操作的數據結構,當 Iterator指向的原始數據發生變化時,Iterator自己就迷失了方向。
所以如果像下面這么寫就會拋出異常java.util.
:
publicvoidreverse(){
LinkedList<Integer>list=newLinkedList<>();
inti=0;
while(i<6){
list.add(i);
i++;
}
Iterator<Integer>it=list.iterator();
intm;
while(it.hasNext()&&i>=0){
m=it.next();
list.add(m);
list.remove(0);
i--;
}
System.out.println(list);
}