java第十八课

集合
ArrayList 来自 List 接口
三个比较重要的接口
Iterator 迭代器接口
Collection 接口
Map 接口
ArrayList 继承 List,list 继承 Collection
List 接口包括两个类 ArrayList LinkedList
ArrayList 是线性结构
这种结构特点:读数据方便,添加/删除费时间.
引用数据,有脚标指示具体是哪一条数据。
List 还有一种数据:链表结构

链表,读取效率低,但是添加/修改/删除效率高。
实际的处理中,往往把线性结构和链式结构合在一起。读取使用线性结构,保存数据使用链表结构。(读写分离)
增删改查都跟 ArrrayList 一样的。
了解底层做了什么内容。
在 LinkedList 链表列表类型中,有三个变量
引入一个结点类型 Node,有三部分,前指针 prev,后指针next,内容 item
E item;
Node<E> next;
Node<E> prev;

编程的核心:处理 prev 前指针和 next 后指针
所有继承于 List 接口的数据
添加 add 删除 remove 查找 get 修改值 set

List 是列表
Set 是集合
List 和 Set 都继承于 Collection
Set 集合是可以去重.
ArrayList 线性列表有序的,add 的顺序就是 print 的顺序,对列表中的重复数据不去重。
LinkList 链式列表有序的,add 的顺序就是 print 的顺序,对列表中的重复数据不去重。
Set
实现 HashSet,所元素放在 set 中,就可以实现去重。
集合可以去重,输出无序的。
//
上面是一个 arrayList,
因为 List
和 Set
都有一个共同接口 Collection
//new Set
的实现类 HashSet,
把列表作为参数。
Set<Integer> mysets=new HashSet<Integer>(arrs);
System.out.println(mysets);
集合去重的原理:
HashSet 去重底层调用 HashMap,HashMap 继承 Map 接
口,Map 是值对
互联网处理的信息都是值对信息,获取相关的信息
网络中常见的数据形式:
值对,Map 就是典型的值对数据的类型,Map 就是
key-value
New HashMap 传入一个参数,把列表的大小和 16 比较。

HashSet 能够去掉,取决于 add 数据
这里 HashMap 类型包含了 key 和 value,把 key 和 value
做转化,把 key 取 hash 作为一个值,变成
(Hash(key),key,value)形式,因为 hash 计算速度快。
判断键的哈希值是否相等,hashSet 底层转化成 HashMap,
计算 Hash 值,去重。
TreeSet 和 HashSet
treeSet 本身可以去重,排序.
这里还有一个 Map 接口,Map 是值对
HashMap,也是 HashSet 底层调用的
HashMap 在底层对 key 值进行去重。
向 map 数据添加内容,也就是 put 操作,键是不能相同的。
遍历 map
迭代器 Iterator
有 next()下一个元素,hashNext()是否有下一个元素
一般定义一个迭代器,判断迭代器是否有下一个元素,如果
有直接输出下一个元素。
Maps 的遍历方法(三种)
keySet
entrySet
迭代器

通过 maps 的方法
获取所有的 key keyset();
获取所有的 value values();
获取单个的 value get(key)
获取 key value 值对 entrySet
HashMap 底层原理.
Hash 谈的哈希表,哈希算法是先算表 1>>30
在 putVal 算法中有指针 Node(链状数据结构)
建完表 tab[],数组是一个线性结构
Hash 表是线性和链状结构结合的结构特点。

java第十八课 · WL—code/WL仓库 - Gitee.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值