Java集合框架概述及Collection接口方法讲解
Java集合框架概述
一方面, 面向對象語言對事物的體現都是以對象的形式,為了方便對多個對象
的操作,就要對對象進行存儲。另一方面,使用Array存儲對象方面具有一些弊
端,而Java 集合就像一種容器,可以動態地把多個對象的引用放入容器中。
1 數組在內存存儲方面的特點:
2 數組初始化以后,長度就確定了。
3 數組聲明的類型,就決定了進行元素初始化時的類型
4 數組在存儲數據方面的弊端:
5 數組初始化以后,長度就不可變了,不便于擴展
6 數組中提供的屬性和方法少,不便于進行添加、刪除、插入等操作,且效率不高。
同時無法直接獲取存儲元素的個數
7 數組存儲的數據是有序的、可以重復的。---->存儲數據的特點單一
8 Java 集合類可以用于存儲數量不等的多個對象,還可用于保存具有映射關系的
關聯數組
Java 集合可分為 Collection 和 Map 兩種體系
1 Collection接口:單列數據,定義了存取一組對象的方法的集合
List:元素有序、可重復的集合
Set:元素無序、不可重復的集合
2 Map接口:雙列數據,保存具有映射關系“key-value對”的集合
Collection接口
Collection 接口是 List、Set 和 Queue 接口的父接口,該接口里定義的方法
既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。 JDK不提供此接口的任何直接實現,而是提供更具體的子接口(如:Set和List)
實現。 ?在 Java5 之前,Java 集合會丟失容器中所有對象的數據類型,把所有對象都
當成 Object 類型處理;從 JDK 5.0 增加了泛型以后,Java 集合可以記住容
器中對象的數據類型。
Collection接口方法
1、添加
add(Object obj)
addAll(Collection coll) 2、獲取有效元素的個數
int size()
3、清空集合
void clear()
4、是否是空集合 ? boolean isEmpty()
5、是否包含某個元素
boolean contains(Object obj):是通過元素的equals方法來判斷是否
是同一個對象
boolean containsAll(Collection c):也是調用元素的equals方法來比
較的。拿兩個集合的元素挨個比較。
6、刪除
boolean remove(Object obj) :通過元素的equals方法判斷是否是
要刪除的那個元素。只會刪除找到的第一個元素
boolean removeAll(Collection coll):取當前集合的差集
7、取兩個集合的交集
boolean retainAll(Collection c):把交集的結果存在當前集合中,不
影響c 8、集合是否相等
boolean equals(Object obj)
9、轉成對象數組
Object[] toArray()
10、獲取集合對象的哈希值
hashCode()
11、遍歷
iterator():返回迭代器對象,用于集合遍歷
Java代碼講解部分
package BaiYSTest1;import java.util.ArrayList; import java.util.Collection; import java.util.Date;/** 一,集合框架的概述* 1,集合,數組都是對多個數據進行存儲操作的結構,簡稱Java容器。* 說明:此時的存儲,主要指的是內存層面的存儲,不涉及到持久化的存儲(.txt,jpg,avi,數據庫)。* * 2.1 數組在存儲多個數據方面的特點* 1:一旦初始化以后,其長度就確定了* 2:數組一旦定義好,其元素的類型也就確定了。我們也就只能操作指定類型的數據了。* 比如:String[] arr;int[] arr1,Object[] arr2;* * 2.2數組在存儲多個數據方面的缺點:* 1:一旦初始化以后,其長度就不可修改。* 2:數組中提供的方法非常有限,對于添加,刪除,插入數據等操作,非常不便,同時效率不高。* 3:獲取數組中實際元素的個數的需求,數組沒有現成的屬性或方法調用。* 4:數組存儲數據的特點:有序,可重復。對于無序,不可重復的需求,不能滿足。* * * 二,集合框架* |--------Collection接口:單列集合,用來存儲一個一個的對象* |----list接口:存儲有序的,可重復的數據。 相當于動態數組。* |----ArraysList,LinkedList,Vector* |----Set接口:存儲無序的,不可重復的數據 相當于高中講的“集合”(無序,確定,互異)* |-----HashSet,LinkedHashSet,TreeSet* |--------Map接口 :雙列集合,用來存儲一對(key-value)一對的數據 相當于高中函數:y=f(x)* |---HashMap,linkedHashMap,TreeMap,Hashtable,properties*/ public class CollectionTest {public static void main(String[] args) {Collection coll = new ArrayList();//1 add(Object e):將元素e添加到集合coll中coll.add("AAAA");coll.add("afaA");coll.add("Asdfa");coll.add(1234);//自動裝箱coll.add(new Date());//2 size():獲取添加的元素的個數System.out.println(coll.size());//5//3 addAll(Collection coll1):將coll1集合中的元素添加到當前集合中Collection coll1 = new ArrayList();coll1.add(8888);coll1.add("KK");coll1.add("heiheihei");coll1.addAll(coll);System.out.println(coll1.size());//8System.out.println(coll1);//[8888, KK, heiheihei, AAAA, afaA, Asdfa, 1234, Mon Mar 23 10:52:23 CST 2020]//4 clear():清空集合元素coll.clear();//5 isEmpty():判斷當前集合是否為空System.out.println(coll.isEmpty());} } package BaiYSTest1;import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.List;/** 繼續測試Collection中的方法* * 向Collection接口中實現類的對象中添加數據obj時,要求obj所在類重寫equals()*/ public class CollectionTest1 {public static void main(String[] args) {Collection coll = new ArrayList();coll.add(123);coll.add(new Date());coll.add("heipapap");coll.add("baibai");coll.add(false);coll.add(new Person("Tom",23));coll.add(new Person("maruya",23));//1 contains(Object obj):判斷當前集合中是否包含objboolean b1 = coll.contains(123);System.out.println(b1);//true//2 containsAll(Collection coll1):判斷形參coll1中所有元素是否都存在于當前集合中Collection coll1 = Arrays.asList(123,23,4);boolean b2 =coll.containsAll(coll1);System.out.println(b2);//3 remove(Object obj):從當前集合中移除obj元素boolean b3=coll.remove(123);System.out.println(b3);boolean b4 = coll.remove(new Person("Tom",23));System.out.println(b4);//4 removeAll(Collection coll1):從當前集合中移除coll1中所有元素 相當于數學中的差集coll.removeAll(coll1);System.out.println(coll);//5 retainAll(Collection coll1):交集:獲取當前集合和coll1集合的交集,并返回給當前集合coll.retainAll(coll1);System.out.println(coll);//6 equals(Object obj):判斷當前集合和形參集合是否都相同Collection coll2 = new ArrayList();coll2.add(123);coll2.add(34);coll2.add("afasdf");System.out.println(coll.equals(coll2));//7 hashCode():返回當前對象的hash值System.out.println(coll.hashCode());//8 集合轉換為數組:toArray()Object[] arr = coll.toArray();for(int i =0;i<arr.length;i++){System.out.println(arr[i]);}//拓展:數組轉換為集合:調用Arrays中的靜態方法List<String> list = Arrays.asList(new String[]{"aa","bb","cc"});System.out.println(list);List arr1 = Arrays.asList(new int[]{123,456});System.out.println(arr1.size());//1List arr2 = Arrays.asList(new Integer[]{123,456});System.out.println(arr2.size());//2} }上面Java代碼實現部分中要用到的Person類
package BaiYSTest1;public class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person() {super();}public Person(String name, int age) {super();this.name = name;this.age = age;}//重寫equals方法@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}}迭代器下一篇將會展開講解
總結
以上是生活随笔為你收集整理的Java集合框架概述及Collection接口方法讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重装JDK后Tomcat和Eclipse
- 下一篇: 665.非递减数列