java 集合之Arraylist的遍歷及排序


最近培訓是先學習java基礎 從最基本的開始學起 因為今天剛剛開博客 要把上周的一些重點內容歸納一下

1.Arraylist常用遍歷以及排序

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.Comparator;
 4 import java.util.Iterator;
 5 
 6 public class Test05 {
 7 public static void main(String[] args) {
 8 
 9 
10 // 先new一個Arraylist (泛型不懂得我也沒辦法)
11 ArrayList<String> arrayList = new ArrayList<String>();
12 
13 
14 //添加元素
15 
16 arrayList.add("3");
17 arrayList.add("1");
18 arrayList.add("2");
19 arrayList.add("2");
20 
21 //利用工具類Collections里面的sort進行排序
22 Collections.sort(arrayList);
23 
24 //arrayList.size()獲取集合長度,arrayList.get()返回在此列表中的指定位置的元素。
25 
26 for (int i = 0; i < arrayList.size(); i++) {
27 System.out.println(arrayList.get(i));
28 
29 }
30 
31 
32 //利用迭代器遍歷
33 Iterator<String> iterator = arrayList.iterator();
34 //利用while循環獲取元素
35 while (iterator.hasNext()) {
36 String string = iterator.next();//指到下一個元素
37 System.out.println(string);
38 }
39 System.out.println("--------------------");
40 
41 
42 //利用匿名內部類comparator方法重寫,arraylist.sort的排序 
43 arrayList.sort(new Comparator<String>() {
44 //這是一個匿名內部類
45 @Override
46 public int compare(String o1, String o2) {
47 //將String 轉為char
48 char a = (char) o1.charAt(0);
49 char b = (char) o2.charAt(0);
50 return a - b;//返回值自己定 正數 0或者負數會有不同的排序方法
51 }
52 });
53 
54 //foreach循環遍歷
55 for (String string : arrayList) {
56 System.out.println(string);
57 }
58 System.out.println("--------------------");
59 
60 }
61 }

 

2.運行結果

 

3.總結:

其中有三種遍歷方式

1.最后一種利用for循環 跟數組一樣獲取集合長度,在通過指定位置獲取指定位置的元素,這是最基本的,(其中Collections工具類將集合進行排序)

2.利用迭代器,iterator來通過hasNest()查看集合是否含有元素,在通過iterator.next()指定到下一個元素,從何獲取元素達到遍歷

3.第三種利用foreach循環遍歷 其中編寫了comparator比較器排序

 

擴展:

這是利用迭代器刪除指定元素

因為正常刪除的話,ArrayList是集合,長度不是固定的,所以無法使用for循環來獲取元素再刪除 因為在你刪除前一個值得同時,長度減少了1,並且后一個值向前挪動了一位,此時i會增加1后直接移動兩位,以至於丟失刪除不到。

而迭代器是通過指針,指向當前數據結構的起始位置。(遍歷器的本質就是一個指針對象),不斷調用指針對象的next方法,指向下一個元素,直到它指向數據結構的結束位置。

 1 //迭代器
 2 Iterator<String> iterator = arrayList.iterator();
 3 //利用while循環獲取元素
 4 while (iterator.hasNext()) {
 5 //如果下一個元素值為2,將它移除
 6 if(iterator.next().equals("2")) {
 7 iterator.remove();
 8 }
 9 }
10 for (String string : arrayList) {
11 System.out.println(string);
12 }

 

運行結果:

以上只是一個學習一周的小程序員,有誤請及時糾正,讓我學習到更深刻的知識。謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM