Java集合-Collection常用方法


集合的學習,需要知道怎么使用集合,往里面存儲數據,會遍歷集合,把數據取出來,最后需要掌握各種集合的特點。集合和數組有什么區別呢?兩者都可以存儲數據,其中數組中可以存儲基本數據類型也可以存儲對象,但集合只能存儲對象,所有的集合,都是繼承自Collection接口,其為所有集合的頂層接口。

Collection接口

Collection接口,定義所有單例集合共性的方法,下面有兩個子接口,一個是List接口,一個是Set接口。

List接口

List接口,其下面主要實現類有Vector集合,ArrayList集合,LinkedList集合,底層實現方式有數組,也有鏈表,它有如下特點:
(1)有序的集合,即存儲和取出元素的順序相同
(2)允許存儲重復的元素
(3)有索引,可以使用普通的for循環遍歷

Set接口

Set接口,其下面主要的實現類有TreeSet集合,HashSet集合,還有LinkedHashSet集合,前兩者是無序的集合,最后一個是有序的集合,它有如下特點:
(1)不允許存儲重復的元素
(2)沒有索引,不能使用普通的for循環遍歷

Collection接口中常用方法

collection集合中共性的方法,可以在java.util.Collection中查看,一共有如下7個,針對不同的實現類,都可以使用這7個方法。
1 public boolean add(E e):添加一個元素
2 public void clear():清空集合中所有的元素
3 public boolean remove(E e):移除集合中指定的元素
4 public boolean contains(E e):檢查集合中是否包含指定的對象
5 public boolean isEmpty():判斷集合是否為空
6 public void size():判斷集合中元素的個數
7 public Object[] toArray():把集合元素存儲到數組中

 1 package CollectionTest;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 /**
 7  * collection集合中共性的方法,可以在java.util.Collection中查看,一共有如下7個
 8  * 1 public boolean add(E e):添加一個元素
 9  * 2 public void clear():清空集合中所有的元素
10  * 3 public boolean remove(E e):移除集合中指定的元素
11  * 4 public boolean contains(E e):檢查集合中是否包含指定的對象
12  * 5 public boolean isEmpty():判斷集合是否為空
13  * 6 public void size():判斷集合中元素的個數
14  * 7 public Object[] toArray():把集合元素存儲到數組中
15  */
16 public class CollectionMethod {
17 
18     public static void main(String[] args) {
19         //定義一個集合,使用父類的接口指向子類的對象
20         Collection<String> col = new ArrayList<String>();//使用ArrayList實現類,初始化的容量為10
21         System.out.println(col);// [] 說明ArrayList重寫了toString方法
22 
23         /**
24          * public boolean add(E e):添加一個元素
25          */
26         boolean r1 = col.add("Messi");
27         System.out.println(r1); //true
28         System.out.println(col); //[Messi]
29 
30         //多添加幾個
31         col.add("Ronald");
32         col.add("Herry");
33         col.add("beckham");
34         System.out.println(col);//[Messi, Ronald, Herry, beckham]
35 
36         /**
37          * public boolean remove(E e):移除集合中指定的元素
38          */
39         //移除beckham
40         boolean r2 = col.remove("beckham");
41         System.out.println(r2); //true
42         System.out.println(col); //[Messi, Ronald, Herry]
43 
44         /**
45          * public boolean contains(E e):檢查集合中是否包含指定的對象
46          */
47 
48         //檢查集合中是否包含messi
49         boolean r3 = col.contains("Messi");
50         System.out.println(r3); //true
51         System.out.println(col); //[Messi, Ronald, Herry]
52 
53         /**
54          * public boolean isEmpty():判斷集合是否為空
55          */
56         //如果為空則為true,否則為false
57         boolean r4 = col.isEmpty();
58         System.out.println(r4); //false
59 
60         /**
61          * public void size():判斷集合中元素的個數
62          */
63 
64         int count=col.size();
65         System.out.println(count); //3
66 
67         /**
68          * public Object[] toArray():把集合元素存儲到數組
69          */
70         Object[] arr=col.toArray();
71         for (int i = 0; i < arr.length; i++) {
72             System.out.println(arr[i]);
73         }
74 
75         /**
76          * public void clear():清空集合中所有的元素
77          */
78         col.clear();//使用后清空所有集合對象
79         System.out.println(col);
80 
81     }
82 }

控制台輸出情況:

迭代器Iterator使用

迭代器iterator的使用,來自java.util.iterator,作用是為了各式各樣的集合,開發了一個統一的取出集合元素的接口,其主要有兩種常用使用方法
1 boolean hasNext():如果集合中還有下一個元素,就返回true,否則返回false
2 E next():取出集合中的下一個元素
使用迭代器需要使用Collection接口的iterator()方法,其返回的就是一個迭代器iterator實現類對象,有了實現類對象才能使用里面的方法
使用迭代器的基本步驟:
1 先使用Collection集合的iterator()方法獲取iterator實現類對象,並使用一個iterator接口來接收,接口指向對象,為多態的應用
2 使用迭代器的hasNext()方法判斷集合中還有沒有下一個元素
3 使用迭代器的next()方法取出集合中下一個元素

 1 package CollectionTest;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6 
 7 /**
 8  * 迭代器iterator的使用,來自java.util.iterator,作用是為了各式各樣的集合,開發了一個統一的取出集合元素的接口,其主要有兩種常用使用方法
 9  * 1 boolean hasNext():如果集合中還有下一個元素,就返回true,否則返回false
10  * 2 E next():取出集合中的下一個元素
11  * 使用迭代器需要使用Collection接口的iterator()方法,其返回的就是一個迭代器iterator實現類對象,有了實現類對象才能使用里面的方法
12  * 使用迭代器的基本步驟:
13  * 1 先使用Collection集合的iterator()方法獲取iterator實現類對象,並使用一個iterator接口來接收,接口指向對象,多態的應用
14  * 2 使用迭代器的hasNext()方法判斷集合中還有沒有下一個元素
15  * 3 使用迭代器的next()方法取出集合中下一個元素
16  */
17 public class IteratorTest {
18 
19     public static void main(String[] args) {
20         //初始化集合,存入集合元素
21         Collection<String> col = new ArrayList<String>();
22         col.add("Messi");
23         col.add("Ronald");
24         col.add("Herry");
25         col.add("Beckham");
26         col.add("clyang");
27         System.out.println(col);
28 
29         //獲取迭代器,迭代器泛型就是集合的泛型
30         Iterator<String> it = col.iterator();//返回集合元素順序隨機
31 
32         //使用步驟,得到一個集合對象
33         boolean r = it.hasNext();
34         String str = it.next();
35         System.out.println(r); //true
36         System.out.println(str); //Messi
37 
38         //可以使用循環遍歷獲取迭代器中每一個對象
39         while (it.hasNext()) {
40             System.out.println(it.next());
41         }
42 
43         //遍歷完后,再次從迭代器取元素
44         boolean r1 = it.hasNext();
45         System.out.println(r1); //false
46         /*String str1 = it.next(); //拋出異常,NoSuchElementException
47         System.out.println(str1);*/
48 
49         System.out.println("---使用for循環遍歷迭代器中元素---");
50 
51         //使用for循環遍歷迭代器
52         for (Iterator<String> it1 = col.iterator(); it1.hasNext(); ) {
53             System.out.println(it1.next());
54         }
55 
56         /**
57          * 使用迭代器的原理,看自己博客記錄
58          * 1 使用集合iterator()方法獲取迭代器對象后,會將地址指向ArrayList底層數組的-1索引位置
59          * 2 hasNext方法會檢查數組索引位置是否有元素
60          * 3 如果索引位置有元素,next方法會取出元素,並將地址往后面移動一位
61          */
62 
63     }
64 }

其中上面例子使用的集合為ArrayList,其底層采用數組實現,獲取迭代器后會直接將地址指向數組前面一位索引為-1,如果是其他的數組實現,如LinkedList,其底層是通過鏈表來實現,鏈表儲存的是一個個數據+地址的集合,通過上一個地址指向下一個地址,那獲取迭代器后地址指向哪里?指向第一個數據之前的位置,參考博客。

控制台輸出情況:

增強型for循環使用

增強型for循環的使用,Collection接口繼承父接口Iterable,這個父接口的作用就是允許對象成為for-each循環的目標,增強型for循環的目的主要是遍歷集合或數組元素。
使用格式:
for(集合或數組數據類型 變量名:集合或數組名){
   方法體
 }

 1 package CollectionTest;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 /**
 7  * 增強型for循環的使用,Collection接口繼承父接口Iterable,這個父接口的作用就是允許對象成為for-each循環的目標
 8  * 增強型for循環的目的主要是遍歷集合或數組元素
 9  * 格式:
10  * for(集合或數組數據類型 變量名:集合或數組名){
11  *     方法體
12  * }
13  */
14 public class ForEachTest {
15 
16     public static void main(String[] args) {
17         //使用增強型for循環遍歷數組
18         loopArray();
19         //使用增強型for循環遍歷集合
20         loopCollection();
21     }
22 
23     public static void loopArray(){
24         int[] arr=new int[]{1,3,5,7,9};
25         for(int i:arr){
26             System.out.println(i);
27         }
28     }
29 
30     public static void loopCollection(){
31         Collection<String> col=new ArrayList<String>();
32         col.add("you");
33         col.add("can");
34         col.add("marry?");
35         col.add("maybe 40 years old");
36         for(String str:col){
37             System.out.println(str);
38         }
39     }
40 }

控制台輸出情況:

以上為集合Collection相關知識點,記錄一下以備后面使用。

 

參考博客:

https://www.cnblogs.com/qducn/p/6228276.html


免責聲明!

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



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