容器(集合,框架)
容器概览
变量:存储单个数据的空间
数组[]:存储若干个相同类型数据的集合|容器
数组回顾
作用
数组是一种容器,可以在其中放置一个或一组数据。从而,实现使用数组来管理一组数据。
优势
是一种简单的线性序列,可以快速的访问数组元素,效率高。如果从 效率和类型检查的角度 讲,数组是最好的。
劣势
不灵活:容量事先定义好,不能随着需求的变化而扩容。
比如:我们在一个用户管理系统中,要把今天注册的所有用户取出来,那么这个用户有多少个?我们在写程序时是无法确定的。如果,你能确定那你就是神了。因此,就不能使用数组。
从而看出,数组远远不能满足我们的需求。我们需要一种 灵活的 ,容量可以随时扩充的容器来装载我们的对象。这就是我们今天要学习的容器类,或者叫集合框架。
容器中的接口
Collection接口
Collection是一个接口,只是规定了一些方法,即作为一个容器就应该具有这些功能。在Collection中并没有任何的可以存储数据的地方,因此只是作为一个规范存在。
- 添加 add
- 删除 remove
- 记数 size
- 包含 contains
- 清空 clear
- 是否空 isEmpty
List
List作为有序的Collection。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。同样是一个接口也只是提供了一些抽象方法,做出相应的规范
- 可以存放很多数据,List中的数据可以重复
- 获取 get
- 查询对象出现的索引 indexOf(Object)
void add( Object element);
void add (int index, Object element);
Object get (int index);
Object set (int index,Object element);//修改某一位置的元素
Object remove (int index);
int indexOf (Object o);//返回某个元素的索引。如果没有该数据,返回-1
Set
set作为Collection的子接口,也只是提供了一些抽象方法,做出相应的规范
- 可以存放很多数据,但是set中的数据不能重复
- 如果前后数据重复,只存放一个
容器的使用
无论是何种容器使用步骤和方式都类似,首先需要有一个容器对象,然后再通过方法对容器中的数据据进行增、删、改、查操作。各种操作的内部对用户都是透明的,我们只需要通过调用方法即可。
List
实现
List接口下有两个实现类 LinkedList
和 ArrayList
,其中都实现了List中的方法,并且都给出了可以存储数据的空间。
List<String> list = new LinkedList<>();
list.add("a");
list.add("b");
list.add(1,"good");
list.add(0,"nice");
list.add("hello");
System.out.println(list.size());
list.remove("a");
System.out.println(list.size());
list.set(0,"first");
System.out.println(list.get(0));
list.clear();
System