集合
- 集合是一种容器,用来按规律存放数据的结构。集合只能放引用类型,不能放基本数据类型。
- 数组也是容器,不过数组是定长的,既可以存储基本数据类型,也可以放引用类型。
- 集合的分类
- Collection
- 是List接口和Set接口的父类。
- 常用的方法:
- boolean add(Object obj) 将ojb对象添加到集合中,如果添加成功返回true,失败返回false。
- boolean addAll(Collection c) 将集合c全部添加到该集合中。
- int size () 集合中的元素个数
- boolean isEmpty() 判断集合元素是否为空
- boolean contains(Object obj) 判断集合中是否包含某个元素
- boolean containsAll(Collection c) 判断集合中是否全部包含集合c
- Iterator iterator() 获取集合迭代器
- Object[] toArray() 集合中的元素转为对象数组
- boolean remove(Object obj) 从集合中删除元素obj
- boolean removeAll(Collection c) 将集合c从该集合中删除
- boolean retainAll(Collection c) 将集合与c取交集赋值给本集合。
- void clear() 清空集合中所有的元素
- List
- List集合中放的元素是有序的,元素允许重复。
- ArrayList
- LinkedList
- List集合中放的元素是有序的,元素允许重复。
- Set
- Set集合中存放的元素是无序的,不重复的。
- 无序是指加入集合的顺序和集合存储的顺序不一致
- 不重复是指,对象之间使用equals()方法返回的值为false。
- HashSet
- 采用哈希算法来存储
- 创建HashSet对象
- HashSet<String> set = new HashSet<>();
- 添加元素
- set.add("A");
- 遍历Set集合
- TreeSet
- 按红黑树的算法来存储
- Set集合中存放的元素是无序的,不重复的。
- Map
- HashMap
- TreeSet
- 存储是按顺序存储的(从小到大),所以,TreeSet存入的引用对象,需要能够比较大小的。
- 所以往TreeSet中存入的元素类型,必须已经实现了Comparable接口,并重写接口中的compareTo()方法。否则运行时会抛出异常。
- List List集合中放的元素是有序的,元素允许重复。
- ArrayList
- ArrayList是类似于数组的线性存储。
- ArrayList的用法:
- 1、创建ArrayList对象
- ArrayList<类型> 对象名 = new ArrayList<>();
- 2、添加对象
- add(obj)
- 3、获取某一个元素
- get(index) index元素的索引,类似于数组的下标。从0开始,最大.size()-1。如果超出范围,报IndexOutOfBoundsException异常。
- 4、 获取元素obj在list中第一次出现的索引值,如果没有,则返回-1。
- int indexOf(obj)
- 5、获取元素obj在list中最后一次出现的索引值。如果没有,则返回-1。
- int lastIndexOf(obj)
- 6、把指定索引位置index上的元素替换为obj
- set(index,obj)
- 1、创建ArrayList对象
- LinkedList
- 数据结构中链表的实现,相比于ArrayList可以再头部和尾部添加、获取、删除元素。可以非常方便的实现stack、queue等数据结构。
- LinkedList的使用方法
- 1、构造方法创建对象
- LinkedList<类型> 对象名 = new LinkedList<>();
- 2、与ArrayList相比,新增的方法:
- addFirst(obj) 将元素obj插入到链表的头部
- addLast(obj) 将元素obj插入到链表的结尾
- getFirst() 获取第一个元素
- getLast() 获取最后一个元素
- removeFirst() 删除并返回第一个元素
- removeLast() 删除并返回最后一个元素
- 1、构造方法创建对象
- LinkedList与ArrayList的比较
- 存储方面:
- ArrayList是线性存储,LinkedList是将对象串联起来的链表
- 操作性能
- ArrayList随机查找效率高,LinkedList的插入删除操作效率高
- 功能
- LinkedList的功能要多于ArrayList
- 存储方面:
- ArrayList