Java语言中集合框架的顶层是: Collection集合 和 Map集合。
其中Collection集合操作的元素基本单位是:单个元素。
其中Map集合操作元素的基本单位是:单对元素。
在实际开发中很少直接使用Collection集合,通常都是使用该集合的子集合:List集合、Queue集合以及Set集合。
返回值类型 | 方法名 | 释义 |
---|---|---|
boolean | add(E e) | - 用于将元素e放入当前集合中。 |
boolean | addAll(Collection<? extendx E>c) | - 用于将参数指定集合中的所有元素放入当前集合中。 |
boolean | remove(Object o) | - 用于从当前集合中删除参数指定的元素。 |
boolean | removeAll(Collection<?> c) | - 用于从当前集合中删除参数指定集合中的所有元素。 |
void | clear() | - 用于将当前集合中的所有元素移除。 |
boolean | contains(Object o) | - 用于判断当前集合中是否包含参数指定的单个元素。 - (o==null ? e==null : o.equals(e)) |
boolean | containsAll(Collection<?> c) | - 用于判断当前集合中是否包含参数指定集合中的所有元素。 |
boolean | isEmpty() | - 用于判断当前集合是否为空。 |
int | size() | - 用于返回当前集合中元素的个数。 |
boolean | retainAll(Collection<? c) | - 用于获取当前集合和参数集合的交集并保留到当前集合中。 - 若当前集合中的内容发生了更改则返回true,否则返回false |
import java.util.*;
public class TestCollection {
public static void main(String[] args) {
//获取Collection集合的引用
//Collection c1 = new Collection(); error 接口不能构造对象
//接口类型的引用指向了实现类的对象,形成了多态
Collection c1 = new ArrayList();
//向集合c1中增加元素
boolean b1 = c1.add(new Integer(1)); //传入引用类型 基本类型要用包装
System.out.println("b1 = " + b1); //true
//自动调用toString(),编译器自动添加
//在编译阶段调用父类的方法,在运行阶段调用子类重写以后的方法,ArrayList类
//toString()方法默认打印的格式为:[元素1, 元素2, ...]
System.out.println("c1 = " + c1); //[1]
b1 = c1.add(new String("two"));
System.out.println("b1 = " + b1); //true
System.out.println("c1 = " + c1); //[1, two]
b1 = c1.add(new Student(1001, "zhangfei", 30));
System.out.println("b1 = " + b1); //true
//当打印集合中的元素时,本质上调用每个元素对应的toString()来打印
//[1, two, Student[id=1001, name=zhangfei, age=30]]
System.out.println("c1 = " + c1);
System.out.println("--------------------------------------");
//准备另外一个集合
Collection c2 = new ArrayList();
c2.add(3); //采用了自动装箱技术 int => Integer
System.out.println("c2 = " + c2); //[3]
c2.add("four");
System.out.println("c2 = " + c2); //[3, four]
System.out.println("当前集合的元素个数是:" + c2.size()); //2
System.out.println("当前集合的元素个数是:" + c1.size()); //3
System.out.println("--------------------------------------");
//将集合c2中的所有元素添加到集合c1中,本质上就是将c2的元素一个个取出来放入c1
b1 = c1.addAll(c2);
//本质上将c2看做一个元素,然后整体放入c1中
//b1 = c1.add(c2);
System.out.println("b1 = " + b1); //b1 = true
//[1, two, Student[id=1001, name=zhangfei, age=30], 3, four]
//[1, two, Student[id=1001, name=zhangfei, age=30], [3, four]]
System.out.println("c1 = " + c1);
System.out.println("c2 = " + c2); //[3, four]
System.out.println("--------------------------------------");
//【查】判断集合c1中是否包含参数指定的单个元素
//[1, two, Student[id=1001, name=zhangfei, age=30], 3, four]
b1 = c1.contains(new Integer(1));
System.out.println("b1 = " + b1); //b1 = true
b1 = c1.contains(new Integer(2));
System.out.println("b1 = " + b1); //b1 = false
b1 = c1.contains(new String("two"));
System.out.println("b1 = " + b1); //b1 = true
//contains方法的原理:参数对象调用equals()方法与集合中的元素一个一个比较
//当Student类没有重写equals()方法时,则比较对象的地址,因此结果为false
//当Student类重写equals()方法后,则比较对象的内容,因此结果为true
b1 = c1.contains(new Student(1001, "zhangfei", 30));
System.out.println("b1 = " + b1); //false b1 = true
System.out.println("--------------------------------------");
//判断集合c1中是否包含参数指定的多个元素
//[1, two, Student[id=1001, name=zhangfei, age=30], 3, four]
//【查】将集合c2中的元素一个个拿出来在c1中进行查找
//[3, four]
//b1 = c1.containsAll(c2);
//【查】表示判断集合c1中是否有元素c2这个整体
b1 = c1.contains(c2);
System.out.println("b1 = " + b1); //b1 = true false
System.out.println("--------------------------------------");
//【删】实现集合c1中单个元素的删除
b1 = c1.remove(new String("2"));
System.out.println("b1 = " + b1); //b1 = false
//[1, two, Student[id=1001, name=zhangfei, age=30], 3, four]
System.out.println("c1 = " + c1); //
b1 = c1.remove(new String("two"));
System.out.println("b1 = " + b1); //b1 = true
//[1, Student[id=1001, name=zhangfei, age=30], 3, four]
System.out.println("c1 = " + c1); //
System.out.println("--------------------------------------");
//[1, Student[id=1001, name=zhangfei, age=30], 3, four]
System.out.println("c1 = " + c1); //
//[3, four]
System.out.println("c2 = " + c2);
//【删】实现集合c1中多个元素的删除
//表示从集合c1中将集合c2中的元素一个一个删除
b1 = c1.removeAll(c2);
//表示从集合c1中将集合c2这个元素整体删除
//b1 = c1.remove(c2);
System.out.println("b1 = " + b1); //true false
//[1, Student[id=1001, name=zhangfei, age=30], 3, four]
System.out.println("c1 = " + c1); //[1, Student[id=1001, name=zhangfei, age=30]]
System.out.println("c2 = " + c2); //[3, four]
System.out.println("--------------------------------------");
//【删】实现集合c1中所有元素的删除
//c1.clear();
//System.out.println("c1 = " + c1); //[啥也没有]
//System.out.println(c1.isEmpty()); //true
//System.out.println(c1.size()); //0
System.out.println("--------------------------------------");
//计算两个集合的交集并保留到当前集合中
System.out.println("c1 = " + c1); //[1, Student[id=1001, name=zhangfei, age=30]]
System.out.println("c2 = " + c2); //[3, four]
//计算c1和c2的交集并保留到c1中,若c1集合中的内容发生了改变则返回true
b1 = c1.retainAll(c2);
System.out.println("b1 = " + b1); //true
System.out.println("c1 = " + c1); //[啥也没有]
System.out.println("c2 = " + c2); //[3, four]
System.out.println("--------------------------------------");
//计算两个集合的交集并保留到当前集合中
//计算c2和c2的交集并保留到c2中,c2中的内容不发生改变,因此返回false
b1 = c2.retainAll(c2);
System.out.println("b1 = " + b1); //false
System.out.println("c2 = " + c2); //[3, four]
}
}