类集中最大的几个操作接口:Collection、Map、Iterator,这三个接口为以后要使用的最重点的接口。
二叉树是树的一种,每个节点最多可具有两个子树,即结点的度最大为 2(结点度:结点拥 有的子树数)。
完全二叉树
若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
二叉树的遍历方式
栈(stack)是限定仅在表尾进行插入和删除操作的线性表。我们把允许插 入和删除的一端称为栈顶,另一端称为栈底
特点:
1先进后出
2栈的入口出口都是栈的顶端位置
队列是一种特殊的线性表,是运算受到限制的一种线性表,只允许在表的 一端进行插入,而在另一端进行删除元素的线性表。队尾(rear)是允许插入的一端。队头(front)是 允许删除的一端。
数组是在内存中开辟一段连续的空间,
指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原 数组元素根据索引,复制到新数组对应索引的位置。
指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复制到新数组对应 索引的位置,原数组中指定索引位置元素不复制到新数组中。
特点:
查找元素快
增删元素慢
数组的长度是固定的。集合的长度是可变的。
数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类 型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
Collection是所有单列集合的父接口,单列集合(List和Set)是Collection的子类,每次操作的时候都只能保存一个对象的数据
常用方法:
。 public boolean add(E e) : 把给定的对象添加到当前集合中
。 public void clear() :清空集合中所有的元素
。 public boolean remove(E e) : 把给定的对象在当前集合中删除
。 public boolean contains(E e) : 判断当前集合中是否包含给定的对象
。 public boolean isEmpty() : 判断当前集合是否为空
。 public int size() : 返回集合中元素的个数
。 public Object[] toArray() : 把集合中的元素,存储到数组中
继承了Collection的所有 ,又增加了一些特有
常用方法:
。public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上
。 public E get(int index) :返回集合中指定位置的元素
。 public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素
。 public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新 前的元素。
其子类 ArrayList Vector LinkList
线程不安全,有List 和Collection的所有方法,默认数组大小 10
线程安全 ArrayList有的都会有
1 ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2 底层都是数组(Object[])实现的
3 初始默认长度都为10。
1 同步性:
Vector中的public方法多数添加了synchronized关键字、以确保方法同步、也即是Vector线程安全、ArrayList线程不安全。
2 扩容:
ArrayList以1.5倍的方式在扩容、Vector 当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍
3性能:
在性能方便通常情况下ArrayList的性能更好、而Vector存在synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差。
4 输出:
ArrayList支持支持 Iterator、ListIterator 输出,Vector除了支持 Iterator、ListIterator外,还有Enumeration输出
存储的结构是链表结构 List里面的方法多有 同时还有自己特有的
。public void addFirst(E e) :将指定元素插入此列表的开头
。 public void addLast(E e) :将指定元素添加到此列表的结尾
。 public E getFirst() :返回此列表的第一个元素
。 public E getLast() :返回此列表的最后一个元素
。 public E removeFirst() :移除并返回此列表的第一个元素
。 public E removeLast() :移除并返回此列表的最后一个元素
。 public E pop() :从此列表所表示的堆栈处弹出一个元素
。 public void push(E e) :将元素推入此列表所表示的堆栈
。 public boolean isEmpty() :如果列表不包含元素,则返回true。
用来遍历Collcection集合下的所有集合 List Set啦...
public E next() :返回迭代的下一个元素 同时指针下移。
public E previous() :返回迭代的上一个元素 同时指针上移。
public boolean hasNext() :如果仍有元素可以迭代,则返回 true
增强for
for(数据类型 变量名 : 集合 或 数组名){}
Set 接口也是 Collection 的子接口,与 List 接口最大的不同在于,Set 接口里面的内容是不允许重复的
无 get方法
获取方法
1 iterator迭代
2toArray 进行遍历
Set的子类, 也无get方法,也不允许重复,,散列存放(顺序不能保证)
获取方法
1 iterator迭代
2toArray 进行遍历
使用举例:
有序(按照元素顺序,不是你输入的顺序 ), 此类iterator快递失败,
自定义类实现对象排序:
要比较的类实现Comparable接口
将Comparator 传递给sort方法(如Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制
Map集合存储的是一个个的键值对数据 key value key不可重复
举例:
使用对象数组加链表, 当哈希桶的使用超过%75,扩容桶为二倍
如果key相同,并且hashCode相同,那么value会被覆盖
如果key相同,但是hashcode不同,那么value不会被覆盖
TreeMap : 有序(自动排序))的Map集合
LinkedHashMap: 也是有序,又有hashMap快速查找的优点
感觉写的不错的点个赞呗 谢谢了
CaesarChang张旭 认证博客专家 Spring Spring Boot Java 曾就职于苏宁,爱奇艺等公司,擅长java后端开发,拥有多年项目经验和教学经验;在多个大型企业级项目中担任过重要角色。教学风格严谨而又不失幽默,注重培养学员的自主学习和解决问题的能力,授课得到学员的高度认可。