集合的特点
长度可变
适合存储对象类型,操作比较简单
集合的框架体系
Collection单列集合
(接口)List:
实现类
ArrayList
LinkedList
Vector
(接口)Set:
实现类
HashSet
TreeSet
LinkedHashSet
Map双列集合
(接口)map:
实现类
HashMap
Hashtable
TreeMap
Properties
Collection接口
常用方法:
add
remove
clear
size
contains
isEmpty
iterator
分类
Set接口
特点
1、无序的
2、不可以添加重复的元素
3、没有索引
分类
HashSet
特点:
底层是哈希表结构
要添加的元素类型 最好重写equals和hashcode方法
原理
HashSet如何过滤重复项?
注意事项
两个对象的哈希值一样,用equals判断两个对象 ,结果不一定为 true
如果equals判断两个对象,结果为true,则两个对象的哈希值肯定一样
两个不同的对象,哈希值也有可能一样
TreeSet
特点:
底层是二叉树结构
可以实现元素的自然排序
实现方式
方式一: 让要添加的元素类型 实现Comparable接口,重写 compareTo方法
方式二: TreeSet构造器中指定Comparator接口的对象,重写compare方法
原理
TreeSet如何过滤重复项
LinkedHashSet
特点
底层 是链表和 哈希表 的双实现
存入和取出的顺序是一致的!
List接口
特点
1、有序的(插入和取出的顺序一致)
2、可以添加重复的元素
3、支持索引
特有方法
add(int index,Object obj)插入
set(int index,Object obj)修改
get(index) 获取指定索引处的元素
remove(int index) 删除指定索引处的元素
indexOf(元素) 获取元素第一次出现的索引
lastIndexOf(元素)获取元素最后一次出现的索引
分类
ArrayList类
特点
底层采用的是数组结构
适合做搜索,不适合增删改,(空间是连续的)
版本较新,线程不安全,不同步,效率比较高
LinkedList
特点
底层采用的是链表结构
适合做增删改,不适合搜索(空间是不连续)
特有方法
addFirst
addLast
getFirst
getLast
removeFirst
removeLast
Vector
特点
版本较老,线程安全的,同步的,效率比较低
底层采用的是数组结构
遍历方式
方式一:使用Iterator
方式二:增强for
List中也可以使用普通for
Map集合
map接口
特点
存取的是键值对,键不能重复,值可以重复
分类
HashMap实现类
特点
底层是哈希表结构,键是 无序的
一般要重写 hashcode和equals方法
版本比较新,线程不安全、不同步的、效率高,允许null键null值
Hashtable实现类
特点
底层是哈希表结构
版本比较老,线程安全、同步的、效率低,不允许null键null值
TreeMap实现类
特点
底层是二叉树,可以实现 对 键 排序
LinkedHashMap实现类
特点
底层 是链表和 哈希表 的双实现
键的存入和取出的顺序是一致的!
Properties实现类
特点
用于读取和写入属性 文件(xx.properties)
属性文件格式要求
键值对
键和值都要求是String类型
常用方法
load加载属性文件的数据 到Properties集合中
list打印Properties集合中的元素到 指定设备上
store 将集合中的内容 存储到 文件中
setProperty 设置属性
getProperty获取属性
方法
put
remove
size
isEmpty
containsKey
containsValue
get
entrySet
keySet
values
泛型
概念
参数化类型,可以用在 类、接口、方法上
标志 <?> <Object>
好处
1、解决了编译警告
2、提高了类型安全
3、减少了类型转换的次数,提高效率,代码简洁
使用
自定义泛型
泛型类
泛型方法
泛型接口
语法注意事项
泛型不支持基本类型,只能放引用类型
泛型支持如备注写法
泛型的继承和通配符
没有所谓的泛型继承,比如下面写法是错误
通配符
? 不限定类型
? extends 类型,限定 上限
? super 类型 ,限定了下限
Collections
sort排序
max/min求最值
fill填充
reverse反转