【无标题】

1. LinkedList

1.1 概述

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

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

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

1.2基本使用

list.add(值);        添加

System.out.println(list.size());             元素个数

System.out.println(list.isEmpty());     是否为空

list.remove(index);         根据下标删除

list.remove(new integer(值));   根据数据删除

list.clear();            清空

list.set(index,值);  更改

list.get(index);        获取

for(Object object:list)     遍历

1.3底层实现

1.3.1节点类

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

1 保存的数据 Object

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

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

1.4 Set和排序

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

HashSet:底层是散列表

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

TreeSet:元素类型必须统一

              不可重复,如果重复不在添加

              根据内容删除,不能根据索引删除,因为没有索引

数字:默认从小到大

set.add(1); 

set.add(5); 

set.add(3); 

set.add(2); 

set.add(4); 

set.add(5);

System.out.println(set);    1  2  3  4  5

字符串:按每位ASCLL码进行排序

set.add("a"); 

set.add("b"); 

set.add("c"); 

set.add("asvq"); 

set.add("abde"); 

System.out.println(set);   a   abde   asvq  b   c

set.add("1"); 

set.add("2"); 

set.add("3"); 

set.add("4"); 

set.add("10"); 

set.add("11"); 

set.add("21"); 

System.out.println(set);   1  10  11  2  21  3  4

1.5Comparable

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

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

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

 

1.6 Comparator

Comparator 也是比较器类 Comparable 也是做比较的 , 如果这两个同时存在,则Comparator优先级高 
Comparable : 如果treeSet中保存我们自己定义的类型的时候,使用Comparable
Comparator : 如果treeSet中保存的不是我们写的类型的时候,就要使用Comparator来指定排序规则
                          比如 Integer 默认是升序排序,假如我们需要降序排序,我们只能使用 Comparator,因为我们不可能去更改Integer的源码
                          但此时 Integer中是有Comparable接口的实现的,等于两个比较都存在,但是Comparator优先级高,
                         所以会按照我们定义的规则进行排序
                         开闭原则 : 对修改关闭,对扩展开发

 1.7 List排序

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值