黑馬程式設計師:Java基礎——集合框架之體系概述、共性方法與迭代器
阿新 • • 發佈:2018-12-26
1.體系概述
1.1 為什麼出現集合類?
面嚮物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。
1.2 陣列和集合類同事容器,有何不同?
1.2.1 陣列雖然也可以儲存物件,但長度是固定的
1.2.2 集合長度是可變的
1.2.3 陣列中可以儲存基本資料型別,集合只能儲存物件。
1.3 集合類的特點
1.3.1 集合只用於儲存物件
1.3.2 集合長度是可變的
1.3.3 集合可以儲存不同型別的物件
1.4 集合的體系結構
Q&A:
Q:為什麼會出現這麼多的容器呢?
A:因為每一個容器對資料的儲存方式都有所不同。
這種儲存方式稱之為:資料結構。
2.共性方法
在集合中有一些共性的方法,分別有:增,刪,查(獲取)。
以下是示例程式碼:
import java.util.ArrayList; public class CollectionDemo { public static void main(String[] args) { base_retain(); } public static void base_retain(){ ArrayList a1 = new ArrayList(); a1.add("Java01"); a1.add("Java02"); a1.add("Java03"); a1.add("Java04"); ArrayList a2 = new ArrayList(); a2.add("Java05"); a2.add("Java06"); a2.add("Java01"); a2.add("Java02"); //a1.retainAll(a2); //取交集,a1中只會保留和a2中相同的元素 //a1.removeAll(a2); //將a1中,a1和a2的交集元素刪除 a1.addAll(a2); //將a2中的所有元素存入a1裡 sop("a1=" + a1); sop("a2=" + a2); } public static void base_method(){ ArrayList a1 = new ArrayList(); //1.新增元素 a1.add("Java01"); a1.add("Java02"); a1.add("Java03"); a1.add("Java04"); //2.獲取個數,集合長度 sop("Size="+a1.size()); sop("a1="+a1); //3.刪除元素 /*a1.remove("Java02"); sop("現在a1="+a1); a1.clear(); sop("a1="+a1+"--被清空");*/ //4.判斷元素 sop("Java03是否存在:"+a1.contains("Java03")); sop("集合是否為空:"+a1.isEmpty()); } public static void sop(Object obj){ System.out.println(obj); } }
擴充套件
1.add方法的引數型別是Object,以便於接收任意型別物件。
2.集合中儲存的都是物件的引用(地址)。
3.迭代器
在集合中去廚房是定義在了集合的內部,這樣取出方式就可以直接訪問集合內部的元素,那麼取出方式就被定義成了內部類。
然而我們知道,每一個容器的資料結構不同,所取出的動作細節也不一樣,但都有一個共性的內容:判斷和取出。那麼可以將這些共性進行抽取。
那麼這些內部類都符合一個規則,該規則就是Iterator。那又如何獲取集合的取出物件呢?通過一個對外提供的方法:iterator()。
以下是Iterator的程式碼:
推薦使用for迴圈遍歷,這樣it在用完以後就會自動釋放。public static void method_get(){ ArrayList a1 = new ArrayList(); a1.add("Java01"); a1.add("Java02"); a1.add("Java03"); a1.add("Java04"); /*Iterator it = a1.iterator(); while(it.hasNext()){ sop(it.next()); //String il = it.next().toString(); if(!"Java02".equals(il)){ sop(il); } }*/ for(Iterator it = a1.iterator();it.hasNext();){ sop(it.next()); } }