[集合]Java的集合框架 Collection集合

来源:互联网 发布:java 邮箱匹配 编辑:程序博客网 时间:2024/04/26 15:24

Java语言中集合框架的顶层是: Collection集合 和 Map集合。

其中Collection集合操作的元素基本单位是:单个元素。

其中Map集合操作元素的基本单位是:单对元素。


在实际开发中很少直接使用Collection集合,通常都是使用该集合的子集合:List集合、Queue集合以及Set集合。

Collection中常用方法返回值类型方法名释义booleanadd(E e)  - 用于将元素e放入当前集合中。booleanaddAll(Collection<? extendx E>c) - 用于将参数指定集合中的所有元素放入当前集合中。booleanremove(Object o) - 用于从当前集合中删除参数指定的元素。booleanremoveAll(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]
}
}