2019-11-01-22:09:09 目錄 1.Collection集合的概念 2.Collection集合常用方法 3.Iterator迭代器 4.增強for 5.Collection常用工具類 Collection集合的概念 ●集合:集合是java中提供的一 種容器,可以用來存儲多個數據。 集 ...
2019-11-01-22:09:09
目錄
1.Collection集合的概念
2.Collection集合常用方法
3.Iterator迭代器
4.增強for
5.Collection常用工具類
Collection集合的概念
●集合:集合是java中提供的一 種容器,可以用來存儲多個數據。
集合和數組既然都是容器,它們有啥區別呢?
●數組的長度是固定的。集合的長度是可變的。
●數組中存儲的是同-類型的元素.可以存儲基本數據類型值。集合存儲的都是對象。而且對象的類型可以不一致。在開發中一般當對象多的時候,使用集合進行存儲。
Collection集合常用方法
1 package demosummary.collection;
2 /*
3 public boolean add(E e) :把給定的對象添加到當前集合中。
4 public void clear():清空集合中所有的元素。
5 public boolean remove(e e);把給定的對象在當前集合中刪除。
6 public boolean contains(E e) ;判斷當前集合中是否包含給定的對象。
7 public boolean isEmpty(): 判斷當前集合是否為空。
8 public int size(): 返回集合中元素的個數。
9 public object[] toArray(): 把集合中的元素,存儲到數組中。
10 */
11 import java.util.ArrayList;
12 import java.util.Collection;
13
14 public class CollectionTest {
15 public static void main(String[] args) {
16
17 Collection<String> str = new ArrayList<>();
18 /*
19 public boolean add(E e) :把給定的對象添加到當前集合中
20 */
21 boolean b = str.add("張三");
22 // System.out.println(b);//true
23 str.add("李四");
24 str.add("王五");
25 str.add("錢六");
26 str.add("趙七");
27 // System.out.println(str);//[張三, 李四, 王五, 錢六, 趙七]
28 /*
29 public boolean remove(e e);把給定的對象在當前集合中刪除
30 */
31
32 // boolean b1 = str.remove("李四");
33 // System.out.println(b1);//true
34 // System.out.println(str);//[張三, 王五, 錢六, 趙七]
35
36 /*
37 public boolean contains(E e) ;判斷當前集合中是否包含給定的對象
38 */
39 boolean b2 = str.contains("孫八");
40 boolean b3 = str.contains("趙七");
41 System.out.println(b2);//false
42 System.out.println(b3);//true
43
44 /*
45 public boolean isEmpty(): 判斷當前集合是否為空。
46 */
47
48 boolean b4 = str.isEmpty();
49 System.out.println(b4);//false
50
51 /*
52 public int size(): 返回集合中元素的個數
53 */
54 int b5 = str.size();
55 System.out.println(b5);//5
56
57 /*
58 public object[] toArray(): 把集合中的元素,存儲到數組中
59 */
60 Object[] obj = str.toArray();
61 System.out.println(obj[0]);//張三
62 for (Object o : obj) {
63 System.out.println(o);
64 }
65
66 /*
67 public void clear():清空集合中所有的元素
68 */
69 str.clear();
70 System.out.println(str);//[]
71 }
72 }
Iterator迭代器
Iterator介面
在程式開發中.經常需要遍歷集合中的所有元素。針對這種需求, JDK專門提供了一個介面java.util. Iterator。Iterator 介面也是Java集合中的一員,但它與collection、Map 介面有所不同,Collection介面與Map介面主要用於存儲元素,而Iterator主要用於迭代訪問(即遍歷) Collection中的元素,因此Iterator對象也被稱為迭代器。
迭代:
即Collection集合元素的通用獲取方式。在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續再判斷,如果還有就再取出來。一直把集合中的所有元素全部取出。這種取出方式專業術語稱為迭代。
Iterator介面的常用方法
public E next() :返回迭代的下一個元素。
public boolean hasNext() :如果仍有元素可以迭代,則返回true.
1 package demosummary.collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Iterator;
6
7 public class IteratorTest {
8 public static void main(String[] args) {
9 //創建一個集合
10 Collection<String> obj = new ArrayList<>();
11 //往集合中添加元素
12 obj.add("德瑪");
13 obj.add("皇子");
14 obj.add("德邦");
15 obj.add("劍聖");
16 //使用多態方式來創建實現類對象
17 Iterator<String> iter = obj.iterator();
18 //使用while迴圈來迭代集合
19 while (iter.hasNext()){
20 String next = iter.next();//使用迭代器原理
21 System.out.println(next);
22 }
23 }
24 }
增強for
增強for迴圈:底層使用的也是迭代器,使用for迴圈的格式,簡化了迭代器的書寫是JDK1.5之後出現的新特性
collection<E>extends Iterable<E>:所有的單列集合都可以使用增強for
public interface Iterable<T>實現這個介面允許對象成為 "foreach"語句的目標。
增強for迴圈:用來遍歷集合和數組
格式:
for(集合/數組的數據類型變數名:集合名/數組名){
sout(變數名);
}
1 package demosummary.collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Iterator;
6
7 public class IteratorTest {
8 public static void main(String[] args) {
9 //創建一個集合
10 Collection<String> obj = new ArrayList<>();
11 //往集合中添加元素
12 obj.add("德瑪");
13 obj.add("皇子");
14 obj.add("德邦");
15 obj.add("劍聖");
16 //使用多態方式來創建實現類對象
17 Iterator<String> iter = obj.iterator();
18 //增強for
19 for (String str : obj) {
20 System.out.println(str);
21 }
22 }
23 }
Collection常用工具類
java.utils.collections 是集合工具類,用來對集合進行操作。部分方法如下:
public static <T> boolean addAll(Collection<T> C,T... elements) :往集合中添加一些元素。
public static vold shuffle(List<?> 1list) :打亂順序:打亂集合順序。
1 package demosummary.collection;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Collections;
6
7 /*
8 public static <T> boolean addAll(Collection<T> C,T... elements) :往集合中添加一些元素。
9 public static void shuffle(List<?> 1list) :打亂順序:打亂集合順序。
10 public static <T> void sort(List<T> list) :將集合中元素按照預設規則排序。
11 public static <T> void sort(List<T> ist, Comparator<? super T> ) :將集合中元素按照指定規則排序。
12 */
13 public class CollectionTools {
14 public static void main(String[] args) {
15 ArrayList<String> obj = new ArrayList<>();
16 //一開始學的添加元素的方法
17 // obj.add("德瑪");
18 // obj.add("皇子");
19 // obj.add("德邦");
20 // obj.add("劍聖");
21
22 /*
23 public static <T> boolean addAll(Collection<T> C,T... elements) :往集合中添加一些元素。
24 */
25
26 //用collection的方法來添加元素
27 Collections.addAll(obj,"德瑪","皇子","德邦","劍聖");
28 System.out.println(obj);//[德瑪, 皇子, 德邦, 劍聖]
29
30 /*
31 public static void shuffle(List<?> 1list) :打亂順序:打亂集合順序。
32 */
33 Collections.shuffle(obj);
34 System.out.println(obj);//[皇子, 德瑪, 德邦, 劍聖]
35
36 }
37 }
public static <T> void sort(List<T> list) :將集合中元素按照預設規則排序。
public static <T> void sort(List<T> ist, Comparator<? super T> ) :將集合中元素按照指定規則排序。
1 package demosummary.collection;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Comparator;
6
7 public class CollectionTools02 {
8 public static void main(String[] args) {
9 //創建一個集合對象
10 ArrayList<Integer> obj = new ArrayList<>();
11 //使用collection方法添加元素
12 Collections.addAll(obj,4,3,2,1);
13 // public static <T> void sort(List<T> list) :將集合中元素按照預設規則排序。
14 //預設是升序
15 Collections.sort(obj);
16 System.out.println(obj);//[1, 2, 3, 4]
17
18 /*
19 public static <T> void sort(List<T> ist, Comparator<? super T> ) :將集合中元素按照指定規則排序。
20 */
21 //創建一個集合對象
22 ArrayList<Person> obj01 = new ArrayList<>();
23 //往集合添加元素
24 obj01.add(new Person("德瑪",18));
25 obj01.add(new Person("皇子",19));
26 obj01.add(new Person("德邦",20));
27 obj01.add(new Person("劍聖",18));
28 //輸出原來集合的排序
29 System.out.println(obj01);
30 //使用collection的方法按照指定規則排序
31 Collections.sort(obj01, new Comparator<Person>() {
32 @Override
33 public int compare(Person o1, Person o2) {
34 //按照大小來排序
35 int result = o1.getAge()-o2.getAge();
36 if (result==0){
37 result=o1.getName().charAt(0)-o2.getName().charAt(0);
38 }
39 return result;
40 }
41 });
42 System.out.println(obj01);
43 }
44 }