1.1 集合的概述
??集合是一個容器,是用來存儲和獲取數據的.
1.1.1 為什么會出現集合類
- 為什么出現集合類:
- 我們學習的是面向對象的編程語言娃属,面向對象的編程語言對事物的描述都是通過對象體現的六荒,
- 為了方便對多個對象進行操作,我們就必須把這多個對象進行存儲矾端,而要想存儲多個對象掏击,就不能是基本的變量了,應該是一個容器類型的變量秩铆。
- 回顧我們學過的知識砚亭,有哪些是容器類型的呢?
- 數組
- StringBuilder
??首先說StringBuilder灯变,它的結果是一個字符串,不一定滿足我們的需求捅膘,所以我們只能
選擇數組了添祸,而數組的長度固定,不能適應變化的需求寻仗,在這種情況下刃泌,Java就提供了集合類供我們使用。
由此可見署尤,集合類的長度是可變的耙替。
- 集合類的特點:長度可變。
1.1.2集合類體系結構圖
Collection.png
1.2 Collection集合
1.2.1 創(chuàng)建Collection集合對象并添加元素
??Collection:是單列集合的頂層接口曹体。
- Collection 表示一組對象俗扇,這些對象也稱為 collection 的元素。
- 一些 collection 允許有重復的元素箕别,而另一些則不允許铜幽。
- 一些 collection 是有序的,而另一些則是無序的串稀。
??JDK 不提供此接口的任何直接
- 實現:它提供更具體的子接口(如 Set 和 List)實現除抛。
??創(chuàng)建Collection集合的對象,我們采用的是多態(tài)的方式厨诸,使用的是具體的ArrayList類镶殷。
- 因為這個類是最常用的集合類。
- ArrayList()
- Collection<E>:
- <E>:是一種特殊的數據類型微酬,泛型绘趋。這里我們會使用就可以了。
- 如何使用呢?
- 在出現E的地方用引用數據類型替換即可颗管。
- 舉例:Collection<String>,Collection<Student>
1.2.1.1 案例代碼
package com.itheima_01;
import java.util.ArrayList;
import java.util.Collection;
/*
* Collection:是單列集合的頂層接口陷遮。
* Collection 表示一組對象,這些對象也稱為 collection 的元素垦江。
* 一些 collection 允許有重復的元素帽馋,而另一些則不允許。
* 一些 collection 是有序的比吭,而另一些則是無序的绽族。
* JDK 不提供此接口的任何直接 實現:它提供更具體的子接口(如 Set 和 List)實現。
*
* 創(chuàng)建Collection集合的對象衩藤,我們采用的是多態(tài)的方式吧慢,使用的是具體的ArrayList類。
* 因為這個類是最常用的集合類赏表。
* ArrayList()
*
* Collection<E>:
* <E>:是一種特殊的數據類型检诗,泛型匈仗。這里我們會使用就可以了。
* 如何使用呢?
* 在出現E的地方用引用數據類型替換即可逢慌。
* 舉例:Collection<String>,Collection<Student>
*/
public class CollectionDemo {
public static void main(String[] args) {
//創(chuàng)建Collection集合對象
//JDK7的新特性悠轩,看懂就可以
//Collection<String> c = new ArrayList<>(); //多態(tài)的方式
Collection<String> c = new ArrayList<String>(); //多態(tài)的方式
//boolean add(E e):添加元素
c.add("hello");
c.add("world");
c.add("java");
//輸出集合對象
System.out.println(c);
//輸出了集合中的元素按照指定格式拼接的內容,說明ArrayList重寫了toString()方法
}
}
1.2.2 Collection集合的成員方法
- boolean add(E e):添加元素
- boolean remove(Object o):從集合中移除元素
- void clear():清空集合中的元素
- boolean contains(Object o):判斷集合中是否存在指定的元素
- boolean isEmpty():判斷集合是否為空
- int size():集合的長度攻泼,也就是集合中元素的個數
1.2.2.1 案例代碼
package com.itheima_01;
import java.util.ArrayList;
import java.util.Collection;
/*
* boolean add(E e):添加元素
* boolean remove(Object o):從集合中移除元素
* void clear():清空集合中的元素
* boolean contains(Object o):判斷集合中是否存在指定的元素
* boolean isEmpty():判斷集合是否為空
* int size():集合的長度火架,也就是集合中元素的個數
*/
public class CollectionDemo2 {
public static void main(String[] args) {
//創(chuàng)建集合對象
Collection<String> c = new ArrayList<String>();
//boolean add(E e):添加元素
//System.out.println("add:"+c.add("hello"));
//System.out.println("add:"+c.add("world"));
//通過查看源碼,我們知道ArrayList集合的add方法的返回值永遠都是true
c.add("hello");
c.add("world");
c.add("java");
//boolean remove(Object o):從集合中移除元素
//System.out.println("remove:"+c.remove("world"));
//System.out.println("remove:"+c.remove("haha"));
//void clear():清空集合中的元素
//c.clear();
//boolean contains(Object o):判斷集合中是否存在指定的元素
//System.out.println("contains:"+c.contains("world"));
//System.out.println("contains:"+c.contains("haha"));
//boolean isEmpty():判斷集合是否為空
//System.out.println("isEmpty:"+c.isEmpty());
//int size():集合的長度忙菠,也就是集合中元素的個數
System.out.println("size:"+c.size());
//輸出集合對象
System.out.println(c);
}
}
1.2.3 Collection集合的遍歷
- Collection集合的遍歷
- Iterator<E> iterator():返回在此 collection 的元素上進行迭代的迭代器距潘。
- 通過集合對象調用iterator()方法得到迭代器對象。
- Iterator:
- E next():返回迭代的下一個元素只搁。
- boolean hasNext():如果仍有元素可以迭代,則返回 true俭尖。
- Iterator:
1.2.3.1 案例代碼
package com.itheima_01;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
* Collection集合的遍歷
*
* Iterator<E> iterator():返回在此 collection 的元素上進行迭代的迭代器氢惋。
* 通過集合對象調用iterator()方法得到迭代器對象。
*
* Iterator:
* E next():返回迭代的下一個元素稽犁。
* boolean hasNext():如果仍有元素可以迭代焰望,則返回 true。
*/
public class CollectionDemo3 {
public static void main(String[] args) {
//創(chuàng)建集合對象
Collection<String> c = new ArrayList<String>();
//添加元素
c.add("hello");
c.add("world");
c.add("java");
//Iterator<E> iterator()
Iterator<String> it = c.iterator();//返回的是迭代器接口的實現類的對象
//System.out.println(it.next());
//System.out.println(it.next());
//System.out.println(it.next());
//NoSuchElementException:沒有這樣的元素異常
//System.out.println(it.next());
//boolean hasNext()
while(it.hasNext()){
//System.out.println(it.next());
String s = it.next();
System.out.println(s);
}
}
}
1.2.4 集合使用步驟圖解
Collection2.png
1.2.5 Collection集合的練習存儲自定義對象并遍歷
??Collection集合存儲自定義對象并遍歷
??提示:自定義一個學生類已亥,給出成員變量name和age熊赖。遍歷集合的時候,在控制臺輸出學生對象的成員變量值虑椎。
- 集合的使用步驟:
- 創(chuàng)建集合對象
- 創(chuàng)建元素對象
- 把元素添加到集合
- 遍歷集合
1.2.5.1 案例代碼
package com.itheima_02;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
* Collection集合存儲自定義對象并遍歷
* 提示:自定義一個學生類震鹉,給出成員變量name和age。遍歷集合的時候捆姜,在控制臺輸出學生對象的成員變量值传趾。
*
* 集合的使用步驟:
* A:創(chuàng)建集合對象
* B:創(chuàng)建元素對象
* C:把元素添加到集合
* D:遍歷集合
*/
public class CollectionTest {
public static void main(String[] args) {
//創(chuàng)建集合對象
Collection<Student> c = new ArrayList<Student>();
//創(chuàng)建元素對象
Student s1 = new Student("林青霞",30);
Student s2 = new Student("張曼玉",35);
Student s3 = new Student("王祖賢",33);
//把元素添加到集合
c.add(s1);
c.add(s2);
c.add(s3);
//遍歷集合
Iterator<Student> it = c.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName()+"---"+s.getAge());
}
}
}