电商网站开发合同,安徽股票配资网站建设,深圳招聘网站,传奇手游新开网站1、集合 在java中#xff0c;集合#xff08;Collection#xff09;指的是一组数据容器#xff0c;它可以存储多个对象#xff0c;并且允许用户通过一些方法来访问与操作这些对象。j 集合的实现原理都基于数据结构和算法#xff0c;如下#xff1a;
数据结构#xff1…1、集合 在java中集合Collection指的是一组数据容器它可以存储多个对象并且允许用户通过一些方法来访问与操作这些对象。j 集合的实现原理都基于数据结构和算法如下
数据结构
线性表 数组链表单链表双链表栈队列普通队列双端队列。散列表 散列函数哈希算法。树 平衡二叉树二叉查找树平衡二叉查找树红黑树。
算法
排序算法 冒泡排序插入排序选择排序归并排序。搜索 深度优先搜索广度优先搜索。查找 线性表查找树结构查找散列表查找。 2、java集合
2.1、java集合框架图只做了解 从上面的集合框架图可以看到Java 集合框架主要包括两种类型的容器一种是集合Collection存储一个元素集合另一种是图Map存储键/值对映射。Collection 接口又有 3 种子类型List、Set 和 Queue再下面是一些抽象类最后是具体实现类。
2.2、集合框架体系图 Java 集合框架提供了一套性能优良使用方便的接口和类java集合框架位于java.util包中 所以当使用集合框架的时候需要进行导包。
2.3、常用的集合框架 2.3.1、ArrayList ArrayList实现了List的接口实现了可变大小的数组随机访问和遍历元素时提供更好的性能。该类也是非同步的,在多线程的情况下不要使用插入删除效率低。 PS:数组的特点查询快增删慢 当创建ArrayList对象时如果使用的是无参构造器则初始elementData容量为0 第一次添加则扩容elementData为10如需要再次扩容则扩容elementData为1.5 倍 ps: JDK 1.7直接创建一个初始容量为10的数组 JDK 1.8一开始创建一个长度为0的数组当添加第一个元素时再创建一个始容量为10的数组 如过一次性添加多个元素1.5倍放不下则新创建数组的长度以实际为准 三种构建方式
ArrayList():构造一个默认大小为10容量的空列表。ArrayList(int initialCapacity):构造一个大小为指定int initialCapacity容量的空列表。ArrayList(Collection c):构造一个和参数c相同元素的ArrayList对象 常用api:
add() 将元素插入到指定位置的 arraylist 中
addAll() 添加集合中的所有元素到 arraylist 中
clear() 删除 arraylist 中的所有元素
clone() 复制一份 arraylist
contains() 判断元素是否在 arraylist
get() 通过索引值获取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 删除存在于指定集合中的 arraylist 里的所有元素
remove() 删除 arraylist 里的单个元素
size() 返回 arraylist 里元素数量
isEmpty() 判断 arraylist 是否为空
subList() 截取部分 arraylist 的元素
set() 替换 arraylist 中指定索引的元素
sort() 对 arraylist 元素进行排序
toArray() 将 arraylist 转换为数组
toString() 将 arraylist 转换为字符串
ensureCapacity() 设置指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 查看 arraylist 是否包含指定集合中的所有元素
trimToSize() 将 arraylist 中的容量调整为数组中的元素个数
removeRange() 删除 arraylist 中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 arraylist 元素
forEach() 遍历 arraylist 中每一个元素并执行特定操作
2.3.2、LinkedList LinkedList实现了List接口允许有null空元素。LinkedList的底层是 双向链表结构。由于链表没有将元素存储在连续的空间中元素存储在单独的节点中然后通过引用将节点连接起来了因此在任意位置插入或者删除元素时不需要搬移元素效率比较高。 构建方式
LinkedList():构造一个空的LinkedList对象。LinkedList(Collection c):构造一个和参数c相同元素的LinkedList对象。 PS:链表表不存在容量不足的问题没有扩容机制 常用api:
public boolean add(E e) 链表末尾添加元素返回是否成功成功为 true失败为 false。
public void add(int index, E element) 向指定位置插入元素。
public boolean addAll(Collection c) 将一个集合的所有元素添加到链表后面返回是否成功成功为 true失败为 false。
public boolean addAll(int index, Collection c) 将一个集合的所有元素添加到链表的指定位置后面返回是否成功成功为 true失败为 false。
public void addFirst(E e) 元素添加到头部。
public void addLast(E e) 元素添加到尾部。
public boolean offer(E e) 向链表末尾添加元素返回是否成功成功为 true失败为 false。
public boolean offerFirst(E e) 头部插入元素返回是否成功成功为 true失败为 false。
public boolean offerLast(E e) 尾部插入元素返回是否成功成功为 true失败为 false。
public void clear() 清空链表。
public E removeFirst() 删除并返回第一个元素。
public E removeLast() 删除并返回最后一个元素。
public boolean remove(Object o) 删除某一元素返回是否成功成功为 true失败为 false。
public E remove(int index) 删除指定位置的元素。
public E poll() 删除并返回第一个元素。
public E remove() 删除并返回第一个元素。
public boolean contains(Object o) 判断是否含有某一元素。
public E get(int index) 返回指定位置的元素。
public E getFirst() 返回第一个元素。
public E getLast() 返回最后一个元素。
public int indexOf(Object o) 查找指定元素从前往后第一次出现的索引。
public int lastIndexOf(Object o) 查找指定元素最后一次出现的索引。
public E peek() 返回第一个元素。
public E element() 返回第一个元素。
public E peekFirst() 返回头部元素。
public E peekLast() 返回尾部元素。
public E set(int index, E element) 设置指定位置的元素。
public Object clone() 克隆该列表。
public Iterator descendingIterator() 返回倒序迭代器。
public int size() 返回链表元素个数。
public ListIterator listIterator(int index) 返回从指定位置开始到末尾的迭代器。
public Object[] toArray() 返回一个由链表元素组成的数组。
public T[] toArray(T[] a) 返回一个由链表元素转换类型而成的数组。
2.3.2、HashMap
HashMap 是一个散列表它存储的内容是键值对(key-value)映射默认长度是16扩容因子0.75。HashMap 实现了 Map 接口根据键的 HashCode 值存储数据具有很快的访问速度最多允许一条记录的键为 null不支持线程同步。HashMap 是无序的即不会记录插入的顺线程不安全key、value 都可以为 nullkey是包装类型。HashMap 继承于AbstractMap实现了 Map、Cloneable、java.io.Serializable 接口。jdk1.7采用头插法由数组 链表 组成链表是为了解决哈希冲突。 jdk1.8采用尾插法由数组 链表红黑树。红黑树条件链表长度大于8且数组长度大于64。 常用api:
clear() 删除 hashMap 中的所有键/值对
clone() 复制一份 hashMap
isEmpty() 判断 hashMap 是否为空
size() 计算 hashMap 中键/值对的数量
put() 将键/值对添加到 hashMap 中
putAll() 将所有键/值对添加到 hashMap 中
putIfAbsent() 如果 hashMap 中不存在指定的键则将指定的键/值对插入到 hashMap 中。
remove() 删除 hashMap 中指定键 key 的映射关系
containsKey() 检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue() 检查 hashMap 中是否存在指定的 value 对应的映射关系。
replace() 替换 hashMap 中是指定的 key 对应的 value。
replaceAll() 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。
get() 获取指定 key 对应对 value
getOrDefault() 获取指定 key 对应对 value如果找不到 key 则返回设置的默认值
forEach() 对 hashMap 中的每个映射执行指定的操作。
entrySet() 返回 hashMap 中所有映射项的集合集合视图。
keySet() 返回 hashMap 中所有 key 组成的集合视图。
values() 返回 hashMap 中存在的所有 value 值。
merge() 添加键值对到 hashMap 中
compute() 对 hashMap 中指定 key 的值进行重新计算
computeIfAbsent() 对 hashMap 中指定 key 的值进行重新计算如果不存在这个 key则添加到 hasMap 中
computeIfPresent() 对 hashMap 中指定 key 的值进行重新计算前提是该 key 存在于 hashMap 中。