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;

自己练习:add set get remove

Add remove都是操作next prev

Get set 操作item的内容。   

编程的核心:处理prev前指针和next后指针

所有继承于List接口的数据

添加add 删除remove 查找get 修改值set

List是列表

Set是集合    

List和Set都继承于Collection

Set集合是可以去重.

ArrayList线性列表有序的,add的顺序就是print的顺序,对列表中的重复数据不去重。

LinkList链式列表有序的,add的顺序就是print的顺序,对列表中的重复数据不去重。

Set

实现HashSet,所元素放在set中,就可以实现去重。

 集合可以去重,输出无序的。

//上面是一个arrayList,因为ListSet都有一个共同接口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表是线性和链状结构结合的结构特点。

通过算法计算线性表的存储,当线性表出现冲突,采用链表。链表超过8个,形成一颗红黑树.   

链状结构采用红黑树

二叉树

红黑树

树结点: 6

8个结点就是红黑树

static final int TREEIFY_THRESHOLD = 8;

/**
 * The bin count threshold for untreeifying a (split) bin during a
 * resize operation. Should be less than TREEIFY_THRESHOLD, and at
 * most 6 to mesh with shrinkage detection under removal.
 */

树结构结点阈值是6
static final int UNTREEIFY_THRESHOLD = 6;

  

 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

HashMap最开始的容量空间是16

 

               

  

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值