Java基础集合简单总结
集合
List集合有:
特点:
1.存取有序 可以重复 有索引
2.底层是数组实现,查询快,增删慢
ArrayList底层:
1.ArrayList底层是一个数组
2.当初始化ArrayList,数组的长度为0
3.当第一次添加的时候,数组的长度为10
4.以后添加时,如果数组的长度不满足时,进行扩容 ,按1.5来进行扩容
5.扩容之后,将原数组中的元素拷贝到新的数组中
ArrayList的特有方法
方法名 | 描述 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
ArrayList是Collection接口的实现类调用方法:
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
boolean removeIf(Object o) | 根据条件进行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
LinkedList集合
特点:
1.存取有序 可以重复 有索引
2.底层是链表结构实现,查询慢 增删快
特有方法:
方法名 | 说明 |
---|---|
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表中的最后一个元素 |
public E removeFirst() | 从此列表中删除并返回第一个元素 |
public E removeLast() | 从此列表中删除并返回最后一个元素 |
set集合有
hashset集合
特点
1.不可以存储重复元素 存储顺序不一致 没有索引 底层是hash表
2.没有索引,可以使用迭代器和增强for进行操作
HashSet是Collection接口的实现类调用方法:
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
boolean removeIf(Object o) | 根据条件进行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
TreeSet集合
特点
1.不能存储重复的元素 没有索引
2.可以将元素按照规则进行排序
3.没有索引,可以使用迭代器和增强for进行操作
4.TreeSet的原理是红黑数,先获取左边,再获取中间,最后获取右边
TreeSet是Collection接口的实现类调用方法:
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
boolean removeIf(Object o) | 根据条件进行移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
排序的方式有:
1.自然排序Comparable的使用
-
使用空参构造创建TreeSet集合
-
用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
-
-
自定义的Student类实现Comparable接口
-
自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法
-
-
重写接口中的compareTo方法
-
重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
-
2.比较器排序Comparator的使用
-
用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的
-
比较器排序,就是让集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法
-
重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
Map双列集合有HashMap和 TreeMap
Map集合的定义:
Map集合又称为双列集合,双列集合中每个元素中有两个值,主要用于存储具有映射关系的数据,这种关系是一一对应的
Map集合的特点:
键不能重复,值可以重复
键与值之间是一一对应的关系
(键+值)这个整体我们称之为"键值对"或"键值对对象",在Java中又叫"Entry对象"
HashMap集合
特点:2
HashMap底层是哈希表结构
依赖hashCode方法和equals方法保证键的唯一
如果键要存储自定义对象,需要重写hashCode和equals方法
方法介绍
方法名 | 说明 |
---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中键值对的个数 |
第一种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<K> keySet() | 获取所有键的集合 |
V get(Object key) | 根据键获取值 |
第二种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<Map.Entry<K,V>>entrySet() | 获取所有键值对对象集合 |
K getKey() | 获得键值 |
V getValue() | 获得值 |
TreeMap集合
特点: 可以排序
TreeMap底层是红黑树结构
依赖自然排序或者比较器排序,对键进行排序
如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则
方法和HashMap一样
第一种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<K> keySet() | 获取所有键的集合 |
V get(Object key) | 根据键获取值 |
第二种遍历方式
先把双列集合转为单列集合,再进行遍历
方法名 | 说明 |
---|---|
Set<Map.Entry<K,V>>entrySet() | 获取所有键值对对象集合 |
K getKey() | 获得键值 |
V getValue() | 获得值 |