手机访问网站建设中/新闻头条最新消息10条
集合引入
软件,就是数据和指令的集合;
数据,是通过内存中的空间来保存的;
单个数据,可以使用变量保存;
多个数据,可以使用数组保存;
但是使用数组有个前提:
- 要保存的数据的数据类型是一致的;
- 要保存的数据的数量是已知的;
但是在开发中,经常会遇到数据的数量不确定的情况;
例如要写一个通讯录的软件,需要保存联系人的信息;但是实际上会有多少联系人,是不确定的;
数量不确定就不能创建数组;
那怎么保存数据呢?
使用集合;
集合和数组的区别
集合,是一种可以保存不同类型的数据,并且容量可以自动增长的容器,只能保存引用类型的数据。
作为容器,数组和集合都能保存多个数据,他们之间有什么区别呢?
数组:
- 只能保存同一种类型的数据;
- 数组一旦创建,容量不可改变;
- 数组可以保存引用类型的数据和基本类型的数据;
集合:
- 可以保存不同类型的数据;(一般开发中一个集合对象都应该只保存一种类型的数据)
- 集合可根据需要自动扩容;
- 集合只能保存引用类型的数据;
什么时候应该使用集合?
要保存的数据的类型不止同一种;(一般开发中,一个集合对象,只应该保存一种类型的数据)
如果不清楚要保存的数据的数量,也应该使用集合;
集合框架
生活中,要保存不同的事物,需要使用不同的容器,例如,水果可以使用篮子装,但水不能用篮子装;
java程序中,存储数据的需求不同,使用的容器也不相同;
java为了描述不同的容器,创建了不同的集合容器类;
容器都有一些共同的操作,将这些共同的操作不断向上抽取、封装,最终形成一个继承体系,就是集合框架;


Collection接口
Collection接口简介

结论:
- Collection接口是集合框架中最顶层的接口,定义了所有集合类的最共性的行为;
- 有的集合对象可以保存重复的元素,有的不能保存重复元素;
- 有的集合保存的数据时有序的,有的是无序的;
- Collection接口非常抽象,所以没有直接实现类,而是有两个直接子接口,实际实现类都是实现它的子接口的;
- 一般使用Collection接口类型的变量进行传参

Collection的方法
一般容器对象,都具有增删改查的功能;
但是collection接口太抽象了,所以只有增、删、获取、判断的方法,没有修改的功能;
增加方法
因为是接口,不能直接使用,所以要找一个实现类来使用;
我们使用Collection接口中用的最最多的实现类:ArrayList类;
1、向容器中添加一个数据:

- 向容器中添加多个数据,数据保存在另一个容器中:



删除方法
- 删除容器中一个指定对象:

可选操作,指的是如果容器中有这个参数表示的对象,就执行删除操作,同时返回true;否则,就不进行任何操作,同时返回false;


2、删除多个对象:





注意:如果在使用这个函数时,接收的参数是一个空集合,结果就会把原来的集合清空;
3、删除容器中的所有对象:



判断方法
- 判断容器是否是空的:


2、判断容器中是否包含指定对象:



获取方法
1、获取容器中保存的数据的数量:


2、获取容器中的所有数据,以数组的形式返回:


3、获取这个容器的迭代器:


集合的遍历:迭代器
迭代器介绍
迭代器,就是用来遍历集合中的数据的;
集合是容器,所有集合类都提供了遍历容器中数据的功能;
我们知道,要遍历数组中的数据,可以使用循环;
但是要遍历集合中的所有元素,因为集合的实现不同,保存数据的方式也不一样,所以我们取出数据的方法也不一样;

而Java就将所有集合容器遍历数据的方法进行抽取,形成一个接口,就是Iterator接口:


迭代器使用演示



迭代器的注意细节
新人在使用迭代器的时候很容易犯一些错误,所以在使用迭代器时有些细节,大家一定要注意一下:
1、从容器中获取的迭代器只能遍历容器一次;要再次遍历,需要重新获取迭代器;


- 在迭代器遍历容器时,一个hasNext方法只应该对应一个next方法;

- 在使用迭代器遍历容器时,不能使用迭代器以外的方法操作容器;

使用增强for循环遍历集合

注意:在使用增强for循环遍历集合的时候,底层仍然使用的是迭代器遍历;所以不能在循环中直接修改集合对象;
否则也会抛出并发修改异常;

集合的小结
集合概念:集合是一种容器,可以保存不同类型的引用数据;
集合特点:
- 只能保存引用类型数据;
- 容量随着使用可以自动增长;
- 同一个容器可以保存不同类型的数据;
(为了避免使用中可能出现问题,所以一个集合容器应该只保存一种类型的数据,使用泛型技术可以保证这点);
集合框架:
Java中为了满足开发中对数据保存的不同需求,设计了不同的集合容器类(因为都在java.util包中,所以又称为集合工具);这些类具有一些共同的操作,如增、删、判断、查询等;为了方便使用,Java对他们进行总结和抽取,形成一个继承体系,就是集合框架;
Collection接口:
Collection接口是Java集合框架中最顶层的接口,定义了各种集合类的最共性的操作,包括4类:
添加方法:
添加一个数据:add();
添加多个数据:addAll();
删除方法:
删除一个数据:remove();
删除交集:removeAll();
保留交集:retainAll();
清空集合:clear();
判断方法:
判断是否为空:isEmpty();
判断是否包含指定数据:contains();
判断是否包含指定多个数据:containsAll();
获取方法:
获取集合中保存的数据个数:size();
获取容器中所有数据,以数组方式返回:toArray();
获取迭代器:iterator();
迭代器:
因为不同的集合类底层保存数据的方式不同,所以遍历集合的具体实现不一样;但是不管遍历哪种集合类,需要的功能是一样的,所以Java定义了遍历集合类的方法,放到接口Iterator中,就是迭代器;
迭代器的方法:
判断容器中有没有可获取的数据:hasNext();
获取下一个数据:next();
删除刚刚获取的数据:remove();
迭代器使用注意事项:
- 一个迭代器只能迭代容器一次,再次迭代,需要重新获取迭代器;
- 在使用迭代器遍历集合容器时,一个判断方法对应一个获取方法;每一个获取方法,都会使迭代器中隐藏的光标向后移动一次;
- 在使用迭代器时,不能对容器进行更改操作;要删除数据,可以通过迭代器提供的方法进行;