集合框架 [框架:半成品]

集合框架 [框架:半成品]
1、概念
存储多个对象的对象 容器
特点:
a、元素类型可以不相同 默认就是Object
b、长度不固定 自动扩容

数组:1、存储空间连续 2、元素类型相同 3、长度固定
使用数组缺点:操作繁琐 需要维护存储空间
2、Java中的集合体系
1、Collection体系 规定元素是一个对象
2、Map体系 规定元素是两个对象
3、Collection体系
a、父接口 Collection
a)特点
元素是对象 没有直接实现类
b)方法
add(Object obj) 添加元素
clear() 清空集合元素
isEmpty() 判断集合是否为存在元素
iterator() 返回集合的迭代器对象【用于遍历】
remove(Object obj) 删除指定元素
size() 返回结合中元素的个数 表示集合长度
toArray() 返回集合对应的对象数组 将集合转化为Object[]
c)遍历 1、foreach 2、迭代器遍历
b、子接口 List
a)特点
有序 有下标 元素可以重复
b)方法
add(int index , Object obj) 将obj对象插入到指定index位置,不会覆盖元素
get(int index) 获取index位置对应的元素
indexOf(Object obj) 返回obj元素在集合中第一次出现的下标 , 如果不存在返回-1
remove(int index) 移除指定位置的元素
set(int index , Object obj) 使用obj替换【覆盖】index位置的元素,其他元素不动
SubList(int begin , int end) 截取集合中begin 开始到end之前的元素【不含end】
c)遍历
在这里插入图片描述

实现类
i.ArrayList 【常用】
底层数组实现 查询快,增删慢 JDK1.2之后 线程不安全
ii.LinkedList
双向链表实现 查询慢,增删快 1.2之后
iii.Vector
底层数组实现 查询快,增删慢 JDK1.0之后 线程安全
c、子接口 Set
a)特点
无序 无下标 元素不可重复
b)方法
继承于Collection
c)遍历
在这里插入图片描述
d)实现类
i.HashSet 【常用】
自定义类型默认无法自动去重
需要使用hashCode()方法和equals()方法完成元素判断和存储
想要自定义类型对象自动去重,需要覆盖equals方法 和 hashCode方法
最好保证相同对象返回相同的哈希码,不同对象返回不同哈希码

HashCode保证元素不重复:
在这里插入图片描述
ii. LinkedHashSet 【了解】
元素没有下标 不可重复,保留元素的插入顺序
iii. TreeSet 【了解】
元素没有下标 不可重复 ,保留元素的自然顺序【按自然顺序排序】
对象类型没有自然顺序,想要排序需要实现comparable接口,覆盖compareTo方法
【compareTo(): 自定义对象排序规则方法】
尽可能使用所有字段依次进行排序,因为TreeSet去重规则就是按照排序时元素相同的规则去重
4、泛型
规范 约束数据类型
泛型集合:指定集合中元素的类型
语法: List<元素类型> list = new ArrayList();
在这里插入图片描述
5、Map
(1)特点
元素是由键和值两个对象构成【键值对 key=value】
键key :无序 无下标 不可重复 键重复,值覆盖
值value:无序 无下标 可以重复
(2)方法
containsKey(Object key) 判断Map中是否存在对应键 true存在 false 不存在
containsValue(Object value) 判断Map中是否存在对应值 true存在 false 不存在
entrySet() 返回Map集合中所有的键值对整体对象,存储在Set集合中
put(Object key , Object value) 向Map集合中添加键值对
get(Object key) 通过键获取值
isEmpty() 判断集合是否为空 true 为空 false 不为空
keySet() 返回Map集合中所有的键对象,存储在Set集合中
values() 返回Map集合中所有的值对象,存储在Collection集合中
remove(Object key) 删除Map集合中的对应键值对
replace(Object key , Object value) 用指定value值替换原有key对应的值
size() 返回值Map中键值对的个数
(3)遍历
在这里插入图片描述
(4)实现类
①HashMap 【常用】
允许null作为键或者值 JDK1.2+ 线程不安全
②HashTable
不允许null作为键或者值 JDK1.0+ 线程安全
③Properties 【特殊】
HashTable的子类 【默认:不允许null作为键或者值】
Properties规定键值均为String类型
非泛型集合 没有泛型<>
使用场景:常用于配置文件[.properties文件]信息的加载
④TreeMap
默认按照键的自然顺序排序
注意:如果键是自定义类型的对象,需要让其实现Comparable接口
[compareTo方法中指定排序规则]

  • 39
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值