解析:如果并不知道程序運行時會需要多少對象,或者需要更復雜方式存儲對象,那么可以使用Java集合框架。
如果啟用集合的刪除方法,那么集合中所有元素的索引會自動維護。
集合完全彌補了數組的缺陷。
02.集合框架的內容
集合框架都包含三大塊內容:對外的接口,接口的實現和對集合運算的算法
01.接口:表示集合的抽象數據類型
02.實現:集合框架中接口的具體實現
03.算法:在一個實現了某個集合框架的接口的對象身上完成某種有用的計算方法
java集合框架簡圖:
01.Collection接口存在儲存一組不唯一(允許重復),無序的對象
02.Set接口繼承Collection接口,存儲一組唯一(不允許重復),無序的對象
03.List接口繼承Collection接口,存儲一組不唯一(允許重復),有序(以元素插入的次序來放置元素,不會重新排列)的對象
04.Map接口存儲一組成對的鍵-值對象,提供key(鍵)到value(值)的映射。Map中的key不要求有序,不允許重復。value同樣不要求有序,但允許重復。
05.Iterator接口是負責定義訪問和遍歷元素的接口。
下面開始介紹:
1.List接口
List接口繼承Collection接口,存儲一組不唯一(允許重復),有序(以元素插入的次序來放置元素,不會重新排列)的對象
實現List接口的常用類有ArrayList和LinkedList
ArrayList對數組進行了封裝,實現了長度可變的數組
LinkedList采用鏈表存儲方式,其優點在于插入,刪除元素時效率比較高
01.ArrayList集合類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package cn.day001; public class Penguin { private String name= "無名氏" ; private String sex= "Q仔" ; public Penguin() { } public Penguin(String name, String sex) { this .name = name; this .sex = sex; } public String getName() { return name; } public void setName(String name) { this .name = name; } public String getSex() { return sex; } public void setSex(String sex) { this .sex = sex; } } |
測試類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
package cn.day001; import java.util.ArrayList; import java.util.Iterator; import java.util.List; //上機1 ArrayList集合類 public class Test { public static void main(String[] args) { //1.創建多個企鵝對象 Penguin penguin= new Penguin( "楠楠" , "Q仔" ); Penguin penguin2= new Penguin( "花花" , "Q妹" ); Penguin penguin3= new Penguin( "哲哲" , "Q妹" ); //2.創建Arraylist集合對象并把2個企鵝對象放到其中 List<Penguin> penguins= new ArrayList<Penguin>(); penguins.add(penguin); penguins.add(penguin2); penguins.add(penguin3); //3.輸出集合中企鵝的數量 System.out.println( "共計有" +penguins.size()+ "只企鵝" ); //4.通過遍歷集合顯示 for ( int i = 0 ; i < penguins.size(); i++) { Penguin pg=(Penguin)penguins.get(i); System.out.println(pg.getName()+ " " +pg.getSex()); } //5.刪除集合中哲哲企鵝 penguins.remove(penguin3); //6.判斷集合中是否還存在哲哲企鵝 if (penguins.contains(penguin3)) { System.out.println( "存在哲哲企鵝" ); } else { System.out.println( "不存在哲哲企鵝" ); } System.out.println(); //7.使用iterator迭代遍歷 System.out.println( "使用iterator遍歷" ); Iterator<Penguin> its=penguins.iterator(); while (its.hasNext()) { Penguin pg =its.next(); System.out.println( "名字" +pg.getName()+ " 性別" +pg.getSex()); } System.out.println(); //8.使用foreach遍歷 System.out.println( "使用foreach遍歷" ); for (Penguin pg : penguins) { System.out.println( "名字" +pg.getName()+ " 性別" +pg.getSex()); } } } |
02.LinkedList集合類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package cn.day001; import java.util.LinkedList; //測試LinkedList的多個特殊方法 public class Test2 { public static void main(String[] args) { //1.創建多個企鵝對象 Penguin penguin= new Penguin( "楠楠" , "Q仔" ); Penguin penguin2= new Penguin( "花花" , "Q妹" ); Penguin penguin3= new Penguin( "哲哲" , "Q妹" ); //2.創建Arraylist集合對象并把2個企鵝對象放到其中 //List<Penguin> penguins=new ArrayList<Penguin>(); LinkedList<Penguin> penguins= new LinkedList<Penguin>(); penguins.add(penguin); penguins.add(penguin2); penguins.add(penguin3); //3.輸出集合中企鵝的數量 System.out.println( "共計有" +penguins.size()+ "只企鵝" ); //4.查看集合中第一只企鵝的昵稱 Penguin firstpenguins=penguins.getFirst(); System.out.println( "第一只企鵝的昵稱是:" +firstpenguins.getName()); //5.查看集合中最后一只企鵝的昵稱 Penguin lastpenguins=penguins.getLast(); System.out.println( "最后一只企鵝的昵稱是:" +lastpenguins.getName()); //6.刪除第一只企鵝和最后一只企鵝 penguins.removeFirst(); penguins.removeLast(); System.out.println( "刪除后企鵝數" +penguins.size()); } } |
2.Map接口
01.HashMap集合類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package cn.day002; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; //上機2 根據寵物昵稱查找寵物 上機3 使用iterator迭代遍歷 public class Test { public static void main(String[] args) { Map<String, String> pet= new HashMap<String, String>(); pet.put( "嘻嘻" , "狗狗" ); pet.put( "哈哈" , "企鵝" ); pet.put( "呵呵" , "貓貓" ); Scanner input= new Scanner(System.in); System.out.println( "請輸入寵物昵稱:" ); String name=input.next(); if (pet.containsKey(name)) { String petname=pet.get(name); System.out.println(name+ "對應的寵物" +petname); } else { System.out.println( "對不起,沒有此昵稱對應的寵物" ); } System.out.println(); //使用iterator迭代遍歷 System.out.println( "使用iterator遍歷" ); Set<String> keys=pet.keySet(); //取出所有的key的值 Iterator<String> it=keys.iterator(); //獲取Iteratoer對象 while (it.hasNext()) { String key = (String) it.next(); //取出key值 String pets=pet.get(key); //根據key取出對應的值 System.out.println( "key值:" +key+ " value值:" +pets); } } } |
以上這篇深入剖析java中的集合框架就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。