java之集合Collection 3個例子
阿新 • • 發佈:2019-01-02
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Collection;
/*
* 集合的由來:
* 我們學習的是面嚮物件語言,而面嚮物件語言對事物的描述是通過物件體現的,為了方便對多個物件進行操作,我們就必須把這多個物件進行儲存。
* 而要想儲存多個物件,就不能是一個基本的變數,而應該是一個容器型別的變數,在我們目前所學過的知識裡面,有哪些是容器型別的呢?
* 陣列和StringBuffer。但是呢?StringBuffer的結果是一個字串,不一定滿足我們的要求,所以我們只能選擇陣列,這就是物件陣列。
* 而物件陣列又不能適應變化的需求,因為陣列的長度是固定的,這個時候,為了適應變化的需求,Java就提供了集合類供我們使用。
*
* 陣列和集合的區別?
* A:長度區別
* 陣列的長度固定
* 集合長度可變
* B:內容不同
* 陣列儲存的是同一種類型的元素
* 而集合可以儲存不同型別的元素
* C:元素的資料型別問題
* 陣列可以儲存基本資料型別,也可以儲存引用資料型別
* 集合只能儲存引用型別
*
* 剛說過集合是儲存多個元的,但是呢,儲存多個元素我們也是有不同需求的:比如說,我要這多個元素中不能有相同的元素,
* 再比如說,我要這多個元素按照某種規則排序一下。針對不同的需求,Java就提供了不同的集合類,這樣呢,Java就提供了很多個集合類。
* 這多個集合類的資料結構不同,結構不同不重要的,重要的是你要能夠儲存東西,並且還要能夠使用這些東西,比如說判斷,獲取等。
* 既然這樣,那麼,這多個集合類是有共性的內容的,我們把這些集合類的共性內容不斷的向上提取,最終就能形成集合的繼承體系結構。
*
* 資料結構:資料的儲存方式。
*
* Collection:是集合的頂層介面,它的子體系有重複的,有唯一的,有有序的,有無序的。(後面會慢慢的講解)
*
* Collection的功能概述:
* 1:新增功能
* boolean add(Object obj):新增一個元素
* boolean addAll(Collection c):新增一個集合的元素
* 2:刪除功能
* void clear():移除所有元素
* boolean remove(Object o):移除一個元素
* boolean removeAll(Collection c):移除一個集合的元素(是一個還是所有)
* 3:判斷功能
* boolean contains(Object o):判斷集合中是否包含指定的元素
* boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
* boolean isEmpty():判斷集合是否為空
* 4:獲取功能
* Iterator<E> iterator()(重點)
* 5:長度功能
* int size():元素的個數
* 面試題:陣列有沒有length()方法呢?字串有沒有length()方法呢?集合有沒有length()方法呢?
* 6:交集功能
* boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回的boolean又是什麼意思呢?
* 7:把集合轉換為陣列
* Object[] toArray()
*/
public class CollectionDemo {
public static void main(String[] args) {
// 測試不帶All的方法
// 建立集合物件
// Collection c = new Collection(); //錯誤,因為介面不能例項化
Collection c = new ArrayList();
// boolean add(Object obj):新增一個元素
// System.out.println("add:"+c.add("hello" ));
c.add("hello");
c.add("world");
c.add("java");
// void clear():移除所有元素
// c.clear();
// boolean remove(Object o):移除一個元素
// System.out.println("remove:" + c.remove("hello"));
// System.out.println("remove:" + c.remove("javaee"));
// boolean contains(Object o):判斷集合中是否包含指定的元素
// System.out .println("contains:"+c.contains("hello"));
// System.out.println("contains:"+c.contains("android"));
// boolean isEmpty():判斷集合是否為空
// System.out.println("isEmpty:"+c.isEmpty());
//int size():元素的個數
System.out.println("size:"+c.size());
System.out.println("c:" + c);
}
}
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Collection;
/*
* boolean addAll(Collection c):新增一個集合的元素
* boolean removeAll(Collection c):移除一個集合的元素(是一個還是所有)
* boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
* boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回的boolean又是什麼意思呢?
*/
public class CollectionDemo2 {
public static void main(String[] args) {
// 建立集合1
Collection c1 = new ArrayList();
c1.add("abc1");
c1.add("abc2");
c1.add("abc3");
c1.add("abc4");
// 建立集合2
Collection c2 = new ArrayList();
// c2.add("abc1");
// c2.add("abc2");
// c2.add("abc3");
// c2.add("abc4");
c2.add("abc5");
c2.add("abc6");
c2.add("abc7");
// boolean addAll(Collection c):新增一個集合的元素
// System.out.println("addAll:" + c1.addAll(c2));
//boolean removeAll(Collection c):移除一個集合的元素(是一個還是所有)
//只要有一個元素被移除了,就返回true。
//System.out.println("removeAll:"+c1.removeAll(c2));
//boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
//只有包含所有的元素,才叫包含
// System.out.println("containsAll:"+c1.containsAll(c2));
//boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回的boolean又是什麼意思呢?
//假設有兩個集合A,B。
//A對B做交集,最終的結果儲存在A中,B不變。
//返回值表示的是A是否發生過改變。
System.out.println("retainAll:"+c1.retainAll(c2));
System.out.println("c1:" + c1);
System.out.println("c2:" + c2);
}
}
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Collection;
/*
* 集合的遍歷。其實就是依次獲取集合中的每一個元素。
*
* Object[] toArray():把集合轉成陣列,可以實現集合的遍歷
*/
public class CollectionDemo3 {
public static void main(String[] args) {
// 建立集合物件
Collection c = new ArrayList();
// 新增元素
c.add("hello"); // Object obj = "hello"; 向上轉型
c.add("world");
c.add("java");
// 遍歷
// Object[] toArray():把集合轉成陣列,可以實現集合的遍歷
Object[] objs = c.toArray();
for (int x = 0; x < objs.length; x++) {
// System.out.println(objs[x]);
// 我知道元素是字串,我在獲取到元素的的同時,還想知道元素的長度。
// System.out.println(objs[x] + "---" + objs[x].length());
// 上面的實現不了,原因是Object中沒有length()方法
// 我們要想使用字串的方法,就必須把元素還原成字串
// 向下轉型
String s = (String) objs[x];
System.out.println(s + "---" + s.length());
}
}
}