一、Collection集合
集合:集合是一种容器,可以用来存储多个数据
一、集合和数组的区别:
1.Java中数组长度是固定的,集合的长度是可变的。
2.数组存储的是同一类型的元素,可以存储基本数据类型,也可以存储引用数据类型。
3.集合中存储的都是对象,而且对象的类型可以不一致,在开发中一般当对象多的时候,使用集合进行存储。
二、集合的框架
按照存储结构分为两大类
单列集合Java.util.collection
双列集合java.util.Map
Collection:单列集合的根接口,用于存储一系列符合某种规则的元素。
collection有两个子接口分别是List和Set
List 接口的特点是 元素有序,元素可以重复,实现类主要有arraylist和linkedlist
Set 接口的特点是 元素无序,元素不可以重复,实现类主要有HashSet和TreeSet
注意:
1.使用集合的时候,学习顶层接口或者抽象类的共性方法,因为所有的子类都能使用
2.学习集合的时候,使用底层,因为顶层不是接口就是抽象类,不能创建对象使用,需要底层的子类创建对象使用
常用集合的底层及特点:
集合名 | 底层实现原理 | 特点 |
ArrayList | 数组 | 查询快,增删慢 |
LinkedList | 链表 | 查询慢,增删快 |
HashSet | 哈希表+红黑树 | 无索引,不可存储重复元素,存取无序 |
Vector | 数组 | 和arraylist类似,但是线程安全 |
LinkedHashSet | 哈希表+链表 | 无索引,不可存储重复单元,存取有序 |
TreeSet(了解) | 二叉树 | 一般用于排序 |
Collection常用功能
所有单列集合的最顶层接口里面定义了所有单列集合的共性方法,任意的单列集合都可以使用collection方法
共性方法:
把给定的对象添加到当前集合 | Public Boolean add(E e) |
清空集合中的所有元素 | Public void clear() |
把给定的元素在当前集合中删除 | Public Boolean remove(E e) |
判断当前集合中是否包含给定的对象 | Public boolean contains(E e) |
判断当前集合是否为空 | Public boolean isEmpty() |
返回集合中元素的个数 | Public int size() |
把集合中的元素存储到数组中并返回 | Public object[] toArray() |
二、Iterator迭代器
1.概述
在程序开发中,经常需要遍历集合中的元素,因为有的元素没有索引,就不能使用for循环,因而jdk专门提供了一个接口java.util.iterator接口。Iterator也是Java集合中的一员。
注意:Iterator与collection和Map接口的不同
Collection和Map主要是用于存储元素。
Iterator主要是用于迭代访问(遍历)collection中的元素,因而iterator对象也叫做迭代器对象。
2.迭代:即collection集合元素获取的通用方式,在取元素之前先判断该集合中有没有元素,有,则取出元素,然后继续判断重复上述操作,直到把集合中的所有元素全部取出,这种方式叫做迭代
3.获取迭代器的方法:
获取集合对应的迭代器,用于遍历集合中的元素 Public Iterator iterator()
4.iterator接口中的方法:
判断集合中还有没有下一个元素,有就返回该元素,没有就报异常 Public E next()
如果仍然有元素可以迭代,则返回ture Public Boolean hasnext()、
注意:
1.Iterator接口也有泛型,迭代器的泛型和集合保持一致。
2.迭代器从集合中取元素是一个重复的过程,因为不知道集合中有多少元素,所以我们使用while循环,循环结束的条件是hasnext方法返回ture
3.集合取出元素时,如果集合中已经没有元素了,还继续使用next方法将会发生NoSuchElementException异常