List(可重复):ArrayList,linkedList
Set(不可重复):HashSet,TreeSet
Mat(双列)HashMap,TreeMatp
Collection,List,Set,Map:是接口
ArrayList,linkedList,HashSet,TreeSet,HashMap,TreeMatp:是实现类
小结:1,数组的长度是不可变的,集合的长度是可变的。
2,数组可以存储基本数据类型和引用数据类型
集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类。
Collection集合概述和使用 Collection集合概述:Collection是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
JDK不提供此接口的任何直接实现,它提供更具体的子接口(Set和List)实现
船舰Collection集合的对象
多态的方式
具体的实现类ArrayList
Collection集合常用方法| 方法名 | 说明 |
| boolean add(E e); | 添加元素 |
| boolean remove(Object o); | 从集合中移除指定的元素 |
| boolean removeif(Object o); | 根据条件进行删除 |
| void clear(); | 清空集合 |
| boolean contains(Object o); | 判断集合中是否存在指定的元素 |
| boolean isEmpty(); | 判断集合是否为空 |
| int size(); | 集合的长度,也就是集合中元素的个数 |
boolean removeif(Object 0 ) 根据条件进行删除
removeif底层会遍历集合,得到集合中的每一个元素
s依次表示集合中的每一个元素
就会把者每一个元素都到lambda表达式中判断一下
如果返回是true,则删除
如果返回是false,则保留不删除
CollectionCollection集合的遍历collection = new ArrayList<>(); collection.removeIf( (String s)->{ return s.length() == 3; } );
Iterator :迭代器,集合的专用遍历方式
Iterator
Iterator中的常用方法
Iterator
boolean hasNext();判断当前位置是否有元素可以被取出
E next();获取当前位置的元素
将迭代器对象移向下一个索引位置
增强for循环增强for:简化数组和collection集合的遍历
它是JDK5以后出现的,其内部原理是一个Iterator迭代器
实现Iterable接口的类才可以使用迭代器和增强for
增强for的格式:
for(元素数据类型 变量名:数组或者collection集合){
//在此处使用变量即可,该变量就是元素
}
ArrayListlist = new ArrayList<>(); for(String s:list){ System.out.pringln(s); }
//1,数据类型一定是集合或者数组中的元素类型
//2,s仅仅是一个变量名而已,在循环的过程中,依次表示集合或则数组中的每一个元素
//3,list就是要遍历的集合或者数组
三种循环的使用场景如果需要操作索引,使用普通for循环
如果在遍历过程中需要删除元素,使用迭代器
如果仅仅是遍历,那么使用增强for
list集合概述和特点 List集合概述有序集合,这里的有序指的是存取顺序
用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
List集合特点有序:存储和取出的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复
List集合特有方法
| 方法名 | 说明 |
| void add(int index ,E element); | 在此集合中的指定位置插入指定的元素 |
| E remove(int index); | 删除指定索引处的元素,返回被删除的元素 |
| E set(int index ,E element) | 修改指定索引处的元素,返回被修改的元素 |
| E get(int index) ; | 返回指定索引处的元素 |
添加元素后,原来位置上的元素往后挪一个索引
List集合中有两个remove方法:
第一个:删除指定的元素,返回值表示当前元素是否删除成功
第二个:删除指定索引的元素,返回值表示实际删除的元素
数据结构数据结构是计算机存储,组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来跟高的运行或者存储效率。
数据结构有:
栈:栈是一种数据先进后出的模型
队列:队列是一种数先进先出的模型
数组:数组是一种查询快,增删慢的模型
查询数据通过地址值和索引定位,查询任意数据耗时相同,查询速度快
删除数据时,要将原始数据删除,同时后面每个数据前移,删除效率低
添加数据时,添加位置后的每个数据后移,再添加元素,添加效率极低
链表:链表是由一个一个节点组成的,一个节点是由数据和地址值组成的
链表是一种增删快,查询慢的模型(对比数组)
查询数据必须从头(head)开始查询
链表分为:单向链表和双向链表
List集合常用实现类List集合常用子类
ArrayList:底层数据结构是数组,查询快,增删慢
linkedList:底层数据结构是链表,查询慢,增删快
linkedList集合特有功能| 方法名 | 说明 |
| public void addFirst(E e ); | 在该列表开头插入指定的元素 |
| public void addLast(E e); | 将指定的元素追加到此列表的末尾 |
| public E getFirst(); | 返回此列表中的第一个元素 |
| public E getLast(); | 返回此列表中的最后一个元素 |
| public E removeFirst(); | 从此列表中删除并返回第一个元素 |
| public E removeLast(); | 从此列表中删除并返回最后一个元素 |



