目录
1. 集合类概述
1.1 集合的由来
Java语言是面向对象的语言,对事物的描述是通过对象来体现的,为了方便对多个对象的操作,需要对对象进行储存,而用来存储对象的变量就需要是容器类型的变量。
目前所学的数组和StringBuffer都是容器类型的,但是StringBuffer的结果是字符串,不一定满足需求。而由于数组的长度是固定的,对象数组具有一定的局限性,所以Java提供了集合类。
针对不同的需求,Java提供了不同的集合类,这些集合类的数据结构(数据结构简单地说就是数据的存储方式)不同。通过不断向上提取集合类的共性内容(比如存储、获取、判断等),得到一个集合的继承体系结构图。
常用继承体系:
Collection
- List
- ArrayList
- Vector
- LinkedList
- Set
- HashSet
- TreeSet
1.2 数组和集合的区别
- 长度区别
- 数组的长度不可变
- 集合的长度可变
- 内容不同
- 数组存储的是同一种类型的元素
- 集合可以存储不同类型的元素
- 元素的数据类型
- 数组既可以存储基本数据类型,又可以存储引用数据类型
- 集合只能存储引用数据类型
1.3 集合的特点
- 集合只用于存储对象
- 集合长度是可变的
- 集合可以存储不同类型的对象
2. Collection接口
2.1 概述
Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,也有无序的
2.2 Collection的功能概述
- 添加功能
- boolean add(Object obj):添加一个元素
- boolean addAll(Collection c):添加一个集合的元素
- 删除功能
- void clear():移除所有元素
- boolean remove(Object o):移除一个元素
- boolean removeAll(Collection c):移除一个集合中的元素
- 判断功能
- boolean contains (Object o):判断集合中是否包含指定元素
- boolean containAll(Collection c):判断集合中是否包含指定的集合元素
- boolean isEmpty():判断集合是否为空
- 获取功能
- Iterator<E> interator()
- 长度功能
- int size():元素的个数
- 交集功能
- boolean retainAll(Collection c):两个集合都有的元素
- 把集合转换为数组
- Object [] to Array()
案例1:基本成员方法案例演示
package cn.itcast_01;
import java.util.ArrayList;//导包快捷键Ctrl+shift+o
import java.util.Collection;
public class CollectionDemo {
public static void main(String[] args) {
// 创建对象
// Collection c = new Collection();//错误,接口不能实例化
Collection c = new ArrayList();// 通过子接口的实现类来实例化
System.out.println("c:" + c);
// boolean add(Object obj):添加一个元素
// 返回boolean值,看源码发现无论添加什么元素,一直返回true
System.out.println("add:" + c.add("hello"));
// 添加元素world
c.add("world");
// 添加元素java
c.add("java");
// 输出集合c
System.out.println("c:" + c);
// void clear():移除所有元素
// c.clear();//返回值为void,不能用println()
// System.out.println("c:"+c);// c:[]
// boolean remove(Object o):移除一个元素
System.out.println("remove:" + c.remove("hello"));//true
System.out.println("remove:" + c.remove("hi"));//false
System.out.println("c:" + c);
// boolean contains (Object o):判断集合中是否包含指定元素
System.out.println("contains:" + c.contains("hello"));//false
System.out.println("contains:" + c.contains("java"));//true
System.out.println("c" + c);
// boolean isEmpty():判断集合是否为空
System.out.println("isEmpty:" + c.isEmpty());//false
System.out.println("c" + c);
//int size():元素的个数
System.out.println("size:"+c.size());//2
System.out.println("c" + c);
}
}
输出:
c:[]
add:true
c:[hello, world, java]
remove:true
remove:false
c:[world, java]
contains:false
contains:true
c[world, java]
isEmpty:false
c[world, java]
size:2
c[world, java]
案例2:All操作的方法演示
- boolean addAll(Collection c):添加一个集合的元素
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Collection;
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("abc4");
c2.add("abc5");
c2.add("abc6");
c2.add("abc7");
// boolean addAll(Collection c):添加一个集合的元素
System.out.println("addAll:"+c1.addAll(c2));
System.out.println("c1:" + c1);
System.out.println("c2:" + c2);
}
}
输出:
addAll:true
c1:[abc1, abc2, abc3, abc4, abc4, abc5, abc6, abc7]
c2:[abc4, abc5, abc6, abc7]
- boolean removeAll(Collection c):移除一个集合中的元素(只要有一个元素被移除就返回true)
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Collection;
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("abc4");
c2.add("abc5");
c2.add("abc6");
c2.add("abc7");
//boolean removeAll(Collection c):移除一个集合中的元素
System.out.println("remove:"+c1.removeAll(c2));
System.out.println("c1:" + c1);
System.out.println("c2:" + c2);
}
}
输出:
remove:true
c1:[abc1, abc2, abc3]
c2:[abc4, abc5, abc6, abc7]
- boolean containAll(Collection c):判断集合中是否包含指定的集合元素(只有包含该集合中的全部元素时才返回true)
package cn.itcast_01;
import java.util.ArrayList;
import java.util.Collection;
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("abc4");
c2.add("abc5");
c2.add("abc6");
c2.add("abc7");
//创建集合3
Collection c3 = new ArrayList();
c3.add("abc4");