Day_17

1. LinkedList

基本使用

介绍

LinkedList : 底层是一个双向链表,因为不是连续存储

只是能够找到下一个元素的地址而已,所以进行添加和删除操作效率高

但是查询效率低,因为只能从第一个挨个找

使用

1.1 底层实现

LinkedList : 底层是一个双向链表,链表由节点构成,因为是双向链表,所以节点中有三个属性

1 保存的数据 Object

2 下一个节点对象  节点类型

3 上一个节点对象  节点类型

 

 1.1.2 获取

get 方法

模拟下标获取的方式,本质上就是遍历操作

 

 2. set

Set特性 无序且不可重复,无序指的是添加顺序和取出顺序不保证一致

分类 : 

HashSet :  底层是散列表

 TreeSet : 底层是红黑树,添加的元素必须按照一定的格式进行排序

(数字 : 默认从小到大,   字符串 : 按每位ASCII码进行排序,   日期 : 自然日期,昨天今天明天)

注意 : 

使用TreeSet的时候,元素必须实现了Comparable接口,因为在添加的时候,会自动调用该接口的compareTo方法进行比较

添加字符串,数字,日期的时候,会进行自动排序,是因为Integer,String,Date都实现了该接口和该方法

如果我们要存储自定类型的时候,就需要让该类去实现对应的接口和方法才能进行存储

2.1 TreeSet

 

3. 排序

使用TreeSet的时候,元素必须实现了Comparable接口,因为在添加的时候,会自动调用该接口的compareTo方法进行比较

添加字符串,数字,日期的时候,会进行自动排序,是因为Integer,String,Date都实现了该接口和该方法

如果我们要存储自定类型的时候,就需要让该类去实现对应的接口和方法才能进行存储

3.1 compareble 和 comparator

Comparator 也是比较器类 Comparable 也是做比较的 , 如果这两个同时存在,则Comparator优先级高

使用情况 : 

Comparable : 如果treeSet中保存我们自己定义的类型的时候,使用Comparable

Comparator : 如果treeSet中保存的不是我们写的类型的时候,就要使用Comparator来指定排序规则

比如 Integer 默认是升序排序,假如我们需要降序排序,我们只能使用 Comparator,因为我们不可能去更改Integer的源码

但此时 Integer中是有Comparable接口的实现的,等于两个比较都存在,但是Comparator优先级高

所以会按照我们定义的规则进行排序

3.2 List 排序

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值