黑马程序员--07.集合框架--01.【Collection接口】
来源:互联网 发布:nginx 自定义403页面 编辑:程序博客网 时间:2024/06/05 07:05
集合框架--1
Collection接口
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. 集合类
(1). 使用集合类的原因
[1]. 数据多---->封装成对象
[2]. 对象多---->封装成集合或者数组
(2). 数组和集合的区别
[1]. 长度可变性
数组长度固定的;集合长度可变的
[2]. 存放元素类型的一致性
数组中只能存放同一种类型的元素;
集合中存放的只要是对象就可以。
【框架的学习方法】参阅顶层,学习底层
2. 集合框架体系结构
(1). 全面的集合框架体系图
(2). 简化集合框架体系图
(3). 出现众多集合容器原因
因为每一种容器的底层对数据的存储方式不一样。这种存储方法称之为数据结构
3. Collection的共性方法
1). Collection的方法综述
(1). Collection是集合框架层次结构中的根接口
(2). C、R、U和D四种操作未必全部都有。
[1]. 很多时候,都没有U这个修改操作
[2]. StringBuffer、StringBuilder都可以进行CRUD
【总结】Collection作为一种容器,就可以CR和D,没有U修改操作
(3).R这个查询操作也称作获取操作
2). Collection中的共性方法
(1). 增(返回值是boolean类型的)
[1].增加一个:boolean add(E e);
[2]. 增加集合:boolean addAll(Collection<?extends E> c);
举例:
//1. Collectoin的增加操作 public static void methodAdd(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); sop("al1的长度是:"+ al1.size()); sop("al1的元素:"+ al1); }
打印结果:
(2). 删
[1].删除一个:boolean remove(Object o);
[2]. 删除集合:boolean removeAll(Collection<?>c);
[3]. 删除全部:void clear();
【规律】Collection的增加和删除操作中:如果增加和删除的对象是一个或者集合,返回值全是boolean类型
举例:
//2. Collectoin的删除操作 public static void methodRemove(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); sop("Remove之前al1的长度是:"+ al1.size()); sop(al1); al1.remove("java01"); sop("Remove之后al1的长度是:"+ al1.size()); sop(al1); sop("********************************************"); sop("***********clear操作***********"); al1.clear(); sop("***********clear操作后***********"); sop(al1); sop("al1是否为空:"+al1.isEmpty()); }
打印结果:
(3). 查/获取
[1]. 获取集合大小:int size();
[2]. 其他获取操作是通过迭代器完成的,下节课介绍
(4). 转换 (集合与数组之间的转换)
集合转换成数组:Object[]toArray();
(5). 判定 (方法返回值都是boolean类型)
[1].判定一个:boolean contains(Object o);
[2].判定集合:boolean containsAll(Collection<?> c);
[3]. 判定集合是否为空:boolean isEmpty();
isEmpty()方法原理就是调用size() ==0这个条件来进行判断的
举例:
//3. Collection的判断操作 public static void methodDecision(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); sop(al1); sop("al1中是否包含java05:"+al1.contains("java05")); sop("al1中是否包含java01:"+al1.contains("java01")); }
打印结果:
(6). 数学集合运算
【知识点】
{1}. 操作的两个集合就是调用这个集合方法的集合和方法接受的集合引用指向的集合对象
{2}. 集合操作的结果存入调用这个集合的方法所属的集合对象
[1]. 并集:booleanaddAll(Collection<?extends E> c);
[2]. 差集:boolean removeAll(Collection<?>c);
[3]. 交集:booleanretainAll(Collection<?> c);
[4]. 获取集合大小/计算集合的模:int size();
[5]. 判定是否是子集:booleancontainsAll(Collection<?> c);
举例1:交集运算
//4. 交集操作 public static void methodSetIntersectionOperation(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); Collectional2 =newArrayList(); al2.add("java01"); al2.add("java02"); al2.add("java05"); al2.add("java06"); sop(al1); sop(al2); sop("al1与al2交集运算:"); al1.retainAll(al2); sop("交集运算的结果:"+ al1); }//al1是最后交集的结果,al2不变
打印结果:
举例2:并集运算
//5. 并集运算 public static void methodSetUnionOperation(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); Collectional2 =newArrayList(); al2.add("java01"); al2.add("java02"); al2.add("java05"); al2.add("java06"); sop(al1); sop(al2); sop("al1与al2并集运算:"); al1.addAll(al2); sop("并集运算的结果:"+ al1); }
打印结果
举例3:差集运算
//6. 差集运算 public static void methodSetSubstractionOperation(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); Collectional2 =newArrayList(); al2.add("java01"); al2.add("java02"); al2.add("java05"); al2.add("java06"); sop(al1); sop(al2); sop("al1与al2的差集:"); al1.removeAll(al2); sop(al1); }
打印结果:
举例4:集合判定操作
//5. 集合判定运算 public static void methodSetDecisionOperation(){ Collectional1 =newArrayList(); al1.add("java01"); al1.add("java02"); al1.add("java03"); al1.add("java04"); Collectional2 =newArrayList(); al2.add("java01"); al2.add("java02"); al2.add("java05"); al2.add("java06"); sop(al1); sop(al2); sop("al1中是否含有al2:"); sop("判断运算的结果:"+al1.containsAll(al2)); }
打印结果:
4. 集合中存放的元素
举例
//实体类class Person{}
//测试类public class Test { public static void main(String[] args) { Personp1 =new Person(); Personp2 =new Person(); Collectional =new ArrayList(); al.add(p1); al.add(p2); }}
【问题】内存中,两个Person对象是在集合al中么?
答:不是!!因为
Person p1 =new Person();
Person p2 =new Person();
这两句先执行到,所以与集合无关。两个new是的OS在堆内存中开辟了不相干的两个内存地址作为两个Person对象的内存空间。
【注意】集合中存放的绝对不可能是实体对象。
集合与数组都一样,存放的是对象的地址。每一个地址指向堆内存中真实的对象元素
内存图如下:
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
- 黑马程序员--07.集合框架--01.【Collection接口】
- 黑马程序员—集合框架Collection接口与List接口
- 黑马程序员———集合框架之Collection接口
- 黑马程序员--集合框架(collection)
- 黑马程序员--集合框架、Collection集合
- 黑马程序员--集合框架(Collection集合)
- 黑马程序员——集合框架接口的分类:(分collection接口 和 map接口)
- 黑马程序员_Java集合-Collection<T>接口
- 黑马程序员_集合之Collection接口
- 黑马程序员__Java集合Collection接口
- 黑马程序员——集合框架collection集合接口及List子类
- 黑马程序员——集合框架(单列集合:Collection接口)
- 黑马程序员五、集合框架Collection
- 黑马程序员_集合框架 Collection
- 黑马程序员——集合框架-Collection
- 黑马程序员_集合框架Collection
- 黑马程序员_集合框架(Collection,Iterator)
- 黑马程序员-集合框架之Collection
- UVA 10487 - Closest Sums
- logistic regression及其参数估计
- date 与datetime的区别
- Myeclipse,eclips安装svn
- Java Server Faces的maven依赖
- 黑马程序员--07.集合框架--01.【Collection接口】
- listactivity与activity的区别
- Beautiful Soup 安装
- 【win7系统无法加右键启动解决】
- java 反射 invoke使用
- JS中showModalDialog 详细使用
- keepalived源码浅析——Daemon进程
- shell快捷键
- ASF文件格式之Objects与Guid总结