学习java的第九天

集合:存储长度可变的多相同数据的存储模型。

集合体系:

Collection单列:每个小区域存储的数据只有一个

List:重复

ArrayList

LinkedList

...

Set:不重复(没有index)

HashSet

TreeSet

...

Map双列:每个小区域存储的数据只有一对

HashMap

...

集合体系的关系:实现

接口的:Collection Map List Set

实现类: ArrayList LinkedList HashSet TreeSet HashMap

接口的创建方式:多态

Collection:单列层次中所有的根

有些集合可重复,有些不可重复

没有下标

没有获取单个元素的方法

常用方法:

boolean add(E e); 添加元素

boolean remove(Object o) 从集合中移除指定元素

void clear() 清空集合中的元素

boolean contains(Object o) 判断集合中是否存在指定元素

boolean isEmpty() 判断集合是否为空

迭代器:集合专门的遍历方式

调用iterator()方法获取一个Iterator对象

HashNext():判断迭代器中是否还有元素

next():从迭代器中取出来一个元素,取出来之后就没了

List:

接口

单列

重复

有序(有下标,有索引,有index)

继承了Collection

Collection中的方法List都有

只需要看List独有的方法

常用方法:

boolean add(itn index,E element);在集合中指定位置插入元素,可以做追加(允许index的值在原最大下标+1)

E remove(int index) 删除指定元素,并返回删除元素

E get(int index) 返回指定位置的元素

E set (int index ,E element)修改指定元素,并返回被修改元素

增强for:内部封装了一个迭代器

格式:

for(数据类型 变量名:数据 数组/单列集合){

}

LinkedList:链表结构

常用方法:

void addFirst(E e) 在列表开头插入指定元素

void addLast(E e) 在列表末尾追加指定元素

E getFirst() 返回列表第一个元素

E getLast() 返回列表末尾元素

E removeFirst() 移除第一个元素并返回

E removeLast() 移除末尾并返回

ArrayList数组结构

数组是一种查询快,增删慢的模型

查询快:查询数据通过索引定位,查询任意数据耗时相同

删除慢:删除元素时,要将原始数据删除,同时元素进行前移

添加慢:添加元素时,要在添加位置的每一个数据进行后移,再添加元素

LinkedList链表结构

链表是一种增删快,查询慢的模型

增删快:增加和删除时,只需要修改下一个地址指向,耗时相同

查询慢:查询数据时,都需要从头开始查询

Set:不重复,没有独有的方法,学习完Collection就学完了Set

无序

没有下标

不能保证存储和取出的顺序一致

哈希值:通过地址值或内容或字符串或数组 通过计算得到的int类型的数据

Object中的hashCode()方法

注意:默认同一个对象的哈希值是固定的,多次调用值相同,值不重复

特殊情况:”通话” 和“重地”不是相同数据但是哈希值相同

通过重写hashCode()实现不同对象哈希值相同

Set存储机制(不重复)

当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode方法得到该对象的hashCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置。如果有两个元素它们的hashCode方法返回的值进行取模16得到的值相同,之后判断地址值和equals,如果有一个相同就判定是相同元素,然后进行覆盖,如果判断是不同就进行插入。

也就是说

注意:本质上还是判断equals

HashSet:

概述:

由哈希值(实际为HashMap)支持,对集合的迭代次序不做任何保证

特点:

底层数据结构是哈希表

对集合的迭代顺序不进行任何保证,就是存储和取出的顺序不一定相同

没有带索引的方法,不能使用for 循环遍历

继承Set集合,元素不能重复

注意:

哈希值元素为链表的数组

TreeSet:元素有序

集合有序:有下标

元素有序:元素有排列显示的规则

元素有序,不是存储或取出有序,而是按照一定的规则进行排序,排序方式取决于构造方法

TreeSet():根据元素的自然顺序进行排序

TreeSet(Comparator comparator):根据指定的比较器比较

特点:

元素有序

没有带索引的方法,不能使用for 循环遍历

继承Set集合,元素不能重复

Comparable:接口给类加上一个自然排序

排序的规则在

ComparaTo();排序规则

返回值决定了排序方式

0:相同元素 不插入

正:插入的元素 在已存在元素 后面 o-this 从大到小

负: 插入的元素 在 已存在元素 前面 this-o 从小到大

o表示已存在元素

this表示插入的元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值