1. 什么是集合?
2. ArrayList<E>集合
ArrayList集合:
- ArrayList是集合中最常用的一种,集合类似于数组,也是容器,用来装数据的,但集合的大小可变。
注意:
- <E>是约束数据类型,这里就只有某一类的数据能进入这个集合
- 不管是什么类型的数据都能装
构造方法
构造方法 | 说明 |
public ArrayList() | 创建一个空的集合对象 |
常用方法
常用方法名 | 说明 |
add(E e) | 将指定的元素添加到此集合的末尾 |
add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
get(int index) | 返回指定索引处的元素 |
size() | 返回集合中的元素的个数 |
remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
remove(Object o) | 删除指定的元素,返回删除是否成功 |
set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
ArrayList的遍历方法
//增强for循环
for (Object o1 : list) {
System.out.println(o1);
}
//普通for循环 size()方法获取集合的长度
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
Iterator it = list.iterator(); //获取迭代器Iterator对象
while(it.hasNext()){ //hasNext() 判断下一个索引位置是否存在元素
Object next = it.next(); //next() 获取位置位置的元素,并且指针下移
System.out.println(next);
}
3. LinkedList<E>集合
定义:底层是一个链表结构,没有所谓的长度。也没有扩容机制。
常用方法
常用方法名 | 说明 |
add(E e) | 将指定的元素添加到此集合的末尾 |
add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
get(int index) | 返回指定索引处的元素 |
remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
remove(Object o) | 删除指定的元素,返回删除是否成功 |
set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
ArrayList和LinkedList的区别
- ArrayList是基于动态数组的数据结构。LinkedList是基于双向链表的数据结构。
- 对于随机访问(get(int index),set(int index,Obj ele)),ArrayList的效率更高。因为有索引的存在,对于LinkedList比较慢,因为要移动指针。
- 对于新增和删除来说,LinkedList的效率更好,因为ArrayList的新增和删除需要移动索引位置,而LinkedList由于双向链表的特性不需要进行任何移动。
- 对于首尾的操作,LinkedList速度更快,因为LinkedList中记录了首尾(first,last)的元素
- 在Java中之所以动态数组比双向链表快,因为动态数组底层使用while遍历查找,双向链表使用迭代器遍历查找。 区分的关键点是RandomAccess接口,此接口为空接口,作用就是用于标记。
4. HashSet
- 底层使用hash散列进行存储。
- HashSet添加数据的时候对于插入顺序是无序的,本身又是有序的。但是不具备排序功能。
- HashSet中数据不重复。
- HashSet中允许存储null。
- 一般用于多次执行但是只存储一份记录的数据(比如说打卡记录) 。
常用方法
方法名 | 说明 |
add(E e) | 添加将指定的元素 |
remove(Object o) | 删除指定的元素 |
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("张三");
set.add("李四");
set.add("张三");
set.add(null);
set.remove("张三"); //删除 只能根据元素删除
for (String s : set) {
System.out.println(s);
}
}
5. TreeSet
- 底层使用tree(树结构)结构进行存储。并且本身具备了排序功能。
- 插入的数据不允许重复。不允许为null。
常用方法
方法名 | 说明 |
add(E e) | 添加将指定的元素 |
remove(Object o) | 删除指定的元素 |