java 基础知识4
集合
Collection 单列集合的父接口
add 方法:将给定对象添加到当前集合 返回 true
clear 方法:清空集合元素 返回 true
remove 方法:删除指定元素 返回 true
isEmpty 方法:判断集合是否为空 返回 true
contains 方法:判断集合是否包含指定元素 返回 true
size 方法:返回集合元素个数
toArray 方法:将集合元素添加到数组中
iterator 方法:获得当前集合的迭代器对象
迭代器 Iterator
hasNext 方法:判断当前位置是否有元素 返回 true
next 方法:返回当前位置的元素,并将迭代器对象移向下一个位置
List 集合
有序,可重复,有索引
add 方法:将元素添加到集合末尾,或者添加到指定索引位置
remove 方法:删除指定索引位置的元素并返回被删除的元素
set 方法:修改指定索引的元素并返回被修改前的元素
get 方法:返回指定索引的元素
ArrayList 集合
懒加载,第一次创建并添加第一个元素时才会在底层创建默认长度为 10 的数组,长度超过阈值会扩容,CopyOnWrite 默认为当前容量的 1.5 倍
LinkedList
底层双链表,首尾操作性能高,多了一些首尾操作的 API
addFirst addLast getFirst getLast removeFirst removeLast 首尾的增删查
增强 for 循环和迭代器遍历集合时用集合对象直接删除操作产生并发问题
可以使用 for 循环或者迭代器遍历时用迭代器自己的方法
泛型
可以定义在类<> 接口<> 方法修饰符 <> 上
当为 E T K V 时可为任意类型
? 可以在泛型使用时代表一切类型
?extends A 表示泛型的上限 必须是 A 或其子类
?super A 表示泛型的下限 必须是 A 或其父类
Set 集合
HashSet
无序,不重复,无索引
底层哈希表 HashMap 数组 + 链表 + 红黑树
哈希值: 根据对象地址计算的 int 类型的数值,Object 类用 hashCode 方法计算哈希值
初始创建长度为 16 的数组,根据计算得到的哈希值与数组索引进行运算存储到相应位置,默认数组存储为当前容量的 3/4 时进行扩容为原来的两倍,相同索引处进行去重判断后来的插入前面的元素尾部,链表结构,如果长度大于 8 后会转为红黑树
LinkedSet
有序,不重复,无索引
底层哈希表,但是多了一个双链表记录存储的顺序
TreeSet
可排序,不重复,无索引
底层基于红黑树
一定要排序,定义指定的规则
可以在存入的元素类上实现 Comparable 接口并重写其中的 comparableTO 方法来指定比较规则
也可以在 TreeSet 定义时在构造器中设置 Comparable 接口指定比较规则
两者皆有 TreeSet 构造器指定的优先级高
可变参数
数据类型...参数名
本质是一个数组,可为空 [0] 也可为一至多个
一个形参列表中只能由一个可变参数且必须在末尾
Collections 工具类
addAll 方法:给集合批量添加数据
shuffle 方法:打乱 List 集合元素的顺序
sort 方法:将 List 集合排序,可自定义规则
Map
key = value 键值对集合
特点由键决定
put remove

遍历方式
-
键找值

-
键值对

-
Lambda 表达式 forEach 方法
HashMap
无序,不重复,无索引,值无要求
底层数组 + 链表 + 红黑树
LinkedHashMap
有序,不重复,无索引,值无要求
TreeMap
排序,不重复,无索引,值无要求
对键排序
与 Set 集合底层类似,底层 Map,没有值

浙公网安备 33010602011771号