導航:首頁 > 編程語言 > javalist顛倒

javalist顛倒

發布時間:2024-07-20 16:53:45

A. 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);
}

B. java中的list順序是固定的嗎是有序的嗎求解,謝謝。

順序放進去是不會亂的,舉個例子,一個list,第一個放進去是1,第二個放進去是2:
List<Integer> numList=new ArrayList<>();
numList.add(1);
numList.add(2);
當你取第一個時numList.get(0);(下標從0開始)
列印它出來還是:1
如果想了解更深,建議學學數據結構,它們的存儲結構與方式

C. JAVA中的List的使用

List<E>([]內的內容可省略),與數組類似:
實例化:List[<數據類型>] list = new ArrayList[<數據類型>]();
獲得集合內元素個數:list.size();

添加元素:
默認添加:list.add(e);
指定下標添加(添加後下標後的元素向後挪一位):list.add(index,e);

刪除元素:
返回是否刪除:list.remove(e);
直接刪除指定下標的元素(只刪除找到的第一個相符合的元素):list.remove(index);

替換元素(替換掉指定下標的元素):list.set(index,e);

取出元素:list.get(index);

清空集合:list.clear();

判斷集合中是否存在某個元素(存在返回true,不存在返回false):list.contains(e);

對比兩個集合中的所有元素:
兩個對象一定相等:list.equals(list2);
兩個對象不一定相等:list.hashCode() == list2.hashCode();
(兩個相等對象的equals方法一定為true, 但兩個hashcode相等的對象不一定是相等的對象。)

獲得元素下標:
元素存在則返回找到的第一個元素的下標,不存在則返回-1:list.indexOf(e);
元素存在則返回找到的最後一個元素的下標,不存在則返回-1:list.lastIndexOf(e);

判斷集合是否為空(空則返回true,非空則返回false):list.isEmpty();

返回Iterator集合對象:list.iterator();

將集合轉換為字元串:list.toString();

截取集合(從fromIndex開始在toIndex前結束,[fromIndex,toIndex)):list.subList(fromIndex,toIndex);

將集合轉換為數組:
默認類型:list.toArray();
指定類型(objects為指定類型的數組對象,並將轉換好的數組賦值給objects數組):list.toArray(objects);

以上為List常用的方法。

D. java中list反向遍歷問題,幫忙看下

在反向遍歷方法中,獲取的迭代器指向第一個元素,it.hasPrevious() 的返回值是 false,所以while 不會執行,要想反向遍歷,需要使 it 指向最後一個元素,如下代碼:

//反向遍歷
publicstaticvoidFbianLi(ArrayListA){

ListIteratorit=A.listIterator(A.size());

while(it.hasPrevious()){
sop1(it.previous()+",");
}
}

E. java里 list順序是固定的嗎,是有序的嗎

list是有序的,是以數組的存儲方式進行存儲.也就是說數組什麼樣它就什麼樣,唯一的區別就版是,它沒有固定大小權. 且list的檢索效率比較高,不過要頻繁的對這個容器里的元素進行更新就不要用它了,用linkedlist比較好.

順序放進去是不會亂的,舉個例子,一個list,第一個放進去是1,第二個放進去是2:
List<Integer> numList=new ArrayList<>();
numList.add(1);
numList.add(2);
當你取第一個時numList.get(0);(下標從0開始)
列印它出來還是:1
List 介面下ArrayList 特點是: 插入數據 有序且可重復 適合查找多增刪少。

閱讀全文

與javalist顛倒相關的資料

熱點內容
防騷擾的app哪個好 瀏覽:298
蘋果手機的微信數據如何導入華為 瀏覽:43
電腦怎麼編程算字元串長度 瀏覽:951
如何預防網路被佔用 瀏覽:394
dns怎麼修復不了網路異常 瀏覽:328
怎麼查看蘋果備份文件 瀏覽:26
網路上說的陳勁生是什麼 瀏覽:913
網站首頁都用了哪些知識點 瀏覽:41
如何刪除手機軟體的重復文件 瀏覽:908
微信頁面沒有添加圖標 瀏覽:47
暗黑綠色裝備升級 瀏覽:261
到哪裡學編程啊 瀏覽:752
電腦粉碎文件和卸載 瀏覽:365
怎麼查看共享電腦所有文件 瀏覽:617
創意編程社區賬號在哪裡 瀏覽:377
好用的壓縮文件 瀏覽:538
360下載的補丁包在哪個文件夾 瀏覽:988
微信54安卓版本官網 瀏覽:698
為什麼cnc編程找工作難 瀏覽:777
sql資料庫埠不通 瀏覽:361

友情鏈接