1 Collection接口
1.1 集合前言
Java语言的java.util包中提供了一些集合类,这些集合类又称之为容器
提到容器不难想到数组,集合类与数组最主要的不同之处是,数组的长度是固定的,集合的长度是可变的,而数组的访问方式比较单一,插入/删除等操作比较繁琐,而集合的访问方式比较灵活
1.2 集合概念
集合的英文名称是Collection,是用来存放对象的数据结构,而且长度可变,可以存放不同类型的对象,并且还提供了一组操作成批对象的方法.Collection接口层次结构 中的根接口,接口不能直接使用,但是该接口提供了添加元素/删除元素/管理元素的父接口公共方法.
由于List接口与Set接口都继承了Collection接口,因此这些方法对于List集合和Set集合是通用的.
1.3 集合的继承结构
Collection接口
List 接口【数据有下标,有序,可重复】
ArrayList子类
LinkedList子类
Set 接口【数据无下标,无序,不可重复】
HashSet子类
Map 接口【键值对的方式存数据】
HashMap子类
package cn.tedu.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
/**本类用于测试Collection接口*/
public class TestCollection {
public static void main(String[] args) {
//1.创建Collection相关的对象
//Collection c = new Collection();//报错,因为Collection是接口
//
是泛型,用来约束集合中的数据类型,不能是基本类型,必须是引用类型 Collection
c = new ArrayList<>(); //2.1测试集合中的常用方法--单个集合间的操作
c.add(100);//向集合中添加元素 Ctrl+D快速向下复制
c.add(200);//向集合中添加元素
c.add(300);//向集合中添加元素
c.add(400);//向集合中添加元素
c.add(500);//向集合中添加元素
System.out.println(c);//直接打印集合,查看集合中的元素
// c.clear();//清空当前集合中的所有元素
// System.out.println(c);
System.out.println(c.hashCode());//获取集合对象的哈希码值
System.out.println(c.toString());//打印集合的具体元素
System.out.println(c.equals(200));//false,集合对象c与值200是否相等
System.out.println(c.contains(200));//true,c集合中是否包含指定元素200
System.out.println(c.isEmpty());//false,判断集合是否为空
System.out.println(c.remove(100));//true,移除集合中的指定元素,成功返回true
System.out.println(c);//[200, 300, 400, 500]
System.out.println(c.size());//4,返回集合的元素个数
Object[] array = c.toArray();//将指定的集合转为数组Object[]
System.out.println(Arrays.toString(array));//[200, 300, 400, 500]
//2.2测试多个集合间的操作
Collection
c2 = new ArrayList<>();//创建第2个集合 c2.add(2);//向c2集合添加元素
c2.add(4);//向c2集合添加元素
c2.add(5);//向c2集合添加元素
System.out.println(c2);//查看c2集合中的元素
c.addAll(c2);//把c2集合的所有元素添加到c集合当中
System.out.println(c);//c2集合的所有元素追加到了c集合末尾
System.out.println(c2);//c2集合本身没有任何改变
//当前集合c是否包含指定集合c2中的所有元素
System.out.println(c.containsAll(c2));
System.out.println(c.contains(200));//c是否包含单个指定元素200
System.out.println(c.removeAll(c2));//删除c集合中属于c2集合的所有元素
System.out.println(c);
System.out.println(c.add(5));
System.out.println(c);
System.out.println(c.retainAll(c2));//取c集合与c2集合的交集(公共元素)
System.out.println(c);//[5]
//3.迭代集合/遍历集合
/**迭代步骤:
* 1.获取集合的迭代器 c.iterator();
* 2.判断集合中是否有下一个可迭代的元素 it.hasNext()
* 3.获取当前迭代到的元素 it.next()*/
Iterator
it = c.iterator(); while(it.hasNext()){
Integer num = it.next();
System.out.println(num);
}
}
}