单列集合
Collection
collection: 是单列集合的跟接口
list子接口
ArrayList
底层是数组(查询快,增删慢)
LinedList
底层是双链表,增删快,查询慢,双向链表可以快速对首尾元素进行操作.
常用方法
addFirst() : 在该列表开头插入指定的元素
addLast(): 将指定的元素追加到此列表的末尾
getFirst(): 返回此列表的第一个元素
getLast() : 返回此列表的最后一个元素
removeFirst() : 从此列表中删除并返回第一个元素
removeLast(): 从此列表中删除并返回最后一个元素
特点:
1,有索引
2,元素可以重复
3,存入和存取顺序一致
常用方法:
add( E e) : 添加元素
add( int index,E e) : 在此集合指定的位置插入指定的元素
remove() : 删除指定元素索引指定的元素,返回被删除的元素
boolean removre() : 从集合移除指定的元素
set() : 修改指定索引初的元素,返回被修改的元素
get() : 返回指定索引处的元素
clear() : 清空集合
contains() : 判断集合中是否存在指定的元素
size() : 集合的长度,也就是集合中元素的个数
addAll() : 添加所有元素到列表中
Set子接口
HashSet
TreeSet
特点:
1,没有索引
2,元素不可以重复
3,存入和去除顺序不一致
Map集合
概述: 一一对应的关系,叫做映射,用于保存具有映射关系的数据,称为双列集合
特点
map是一种键值对集合,每一个元素都包含一个键对象和一个值对象
map集合中,键不允许重复,值可以重复
键和值是一一对应的 通过键可以找到与之对应的唯一的值
Map接口的常用实现类
HashMap
特点
底层采用的是哈希表结构,元素的存取无序(HashSet的底层其实是借助了HashMap实现存储)
要保证键的唯一,不重复,需要重写键的hashCode()方法和equals()方法
TreeMap:
特点
是map里面的一个实现类
底层的数据结构是红黑树: 可以对元素的键进行排序
排序的方式有两种:
自然排序
使用无参构造器创建TreeMap集合,存入集合的键需要实现Comparable<T> 接口
比较器排序
使用带参构造器创建TreeMap集合,传入Comparator<T> 的实现类
Map集合的方法
put() : 添加元素
get() : 根据指定的键,在Map集合中获取对应的值
remove() : 根据键删除键值对应的元素
clear() : 移除所有的键值对应的元素
containKey() :判断集合是否包含指定的键
containValue() : 判断集合是否包含指定的值
isEmpty() :判断集合是否为空
size() : 集合的长度,也就是集合中键值对的个数
map遍历:
map.entrySet(); 增强for循环遍历,获取key 获取value,打印输出
map.keySet(); 获取迭代器遍历集合所有数据
数组的二分查找步骤
1,定义两个变量,表示要查找的范围。默认min = 0 , max = 最大索引
2,循环查找,循环条件是min <= max
3,计算出mid的值
4,判断mid位置的元素是否为要查找的元素,如果是直接返回对应的索引
5,如果要查找的值在mid的左半边,那么min值不变, max = mid-1,继续下次循环查找
6,如果要查找的值在mid的右半边,那么max值不变, min = mid+1,继续下次循环查找
7,当min > max 时, 表示要查找的元素在数组中不存在,返回-1
Collections工具类
操作集合的工具类
提供了许多集合的方法,
方法
addAll(Collection<? super T> c, T... elements) : 将所有指定的元素添加到指定的集合中
shuffle(List<?> list) :随机打乱list集合中元素的顺序
sort() : 排序