数据结构
* 栈:先进后出:
* 方法调用时:
入栈的顺序: main method
出栈的顺序: method main
* 队列:先进先出
先排队的人先买到票
* 数组:
* 结构特点:
1. 长度固定
2. 有索引
3. 一块连续的内存空间
* 操作上的特点:
查询快
增删慢
* 链表:
* 结构特点:
1. 每个元素都是一个对象,包含了两部分内容,数据域和指针域。
2. 每个元素之间通过地址值连接,上一个元素会拥有下一个元素的地址值。
* 操作上的特点:
查询慢
增删快
* 红黑树:
* 树形结构
* 二叉树
* 查找树/排序树 : 对于节点,左边小,右边大
* 平衡树:左右子树的高度差,不大于1
* 红黑树:一个趋近于平衡的二叉树
* 特点:查询快
### List体系:
* 特点:
有序、有索引、允许重复
* List特有功能:
* E get(int index) 获取指定索引位置的元素
* E set(int index, E e) 修改指定索引位置的元素,返回被修改的元素
* E remove(int index) 删除指定索引位置的元素,返回被删除的元素
* void add(int index, E e) 在指定索引位置添加一个指定元素
* 子类:
* ArrayList 底层是数组的实现
* LinkedList 底层是链表的实现
* 特有功能:
1. addFirst(E e)
2. addLast(E e)
3. E removeFirst()
4. E removeLast()
5. E getFirst()
6. E getLast()
* Vector 功能类似于ArrayList,但是是线程安全类
### Set体系:
* 特点:
无序、无索引、不允许重复
* 子类:
* HashSet 底层是hash表的实现
* 存储自定义对象的时候需要重写hashCode和equals方法保证元素唯一
* LinkedHashSet
* 是HashSet的子类,底层是链表+hash表的实现。
* 能保证元素存和取的顺序是一致的
* TreeSet 元素不重复,然后元素会按照指定的顺序排列。
1. 指定的顺序排列 元素本身实现了Comparable接口
2. 额外给一个比较器对象
### 可变参数:
* 概述:JDK1.5之后出现的一种方法参数上的特殊写法
* 格式: 数据类型... 变量名
* 作用:当一个方法的参数是可变参数的时候,此方法可以接收任意多个(0个,1个,多个,数组)该类型的变量
### Collections工具类
* static boolean addAll(Collection<? super T>, T... elements) 往指定集合中添加指定元素
* static void shuffle(List<?> list) 将集合中的元素打乱顺序,随机置换
* static void sort(List<T> list) 将list集合中的元素按照元素本身的排序规则进行排序(要求元素所在的类必须实现Comparable接口)
* static void sort(List<T> list, Comparator<T> c) 将list集合中的元素按照指定比较器的排序规则进行排序
|
|