Java的集合

本文介绍了Java中的ArrayList、LinkedList、List和Set接口,重点讲解了ArrayList的线性结构特点、LinkedList的链表结构优势以及如何利用HashSet实现去重。同时讨论了HashMap底层的哈希表和红黑树原理,以及集合遍历方法。
摘要由CSDN通过智能技术生成

集合

ArrayList来自List接口,ArrayList继承List,list继承Collection

List接口包括两个类 ArrayList   LinkedList   

ArrayList是线性结构

这种结构特点:读数据方便,添加/删除费时间.

引用数据,有脚标指示具体是哪一条数据。

List还有一种数据:链表结构

链表,读取效率低,但是添加/修改/删除效率高。

实际的处理中,往往把线性结构和链式结构合在一起。读取使用线性结构,保存数据使用链表结构。(读写分离)

增删改查都跟ArrrayList一样的。

了解底层做了什么内容。

在LinkedList链表列表类型中,有三个变量

引入一个结点类型Node,有三部分,前指针prev,后指针next,内容item

E item;
Node<E> next;
Node<E> prev;

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是值对

互联网处理的信息都是值对信息,获取相关的信息

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

 

代码在码云Gitee,有需要的小伙伴可自取哦:

Java的集合代码 · zyt/麦当劳投资人 - Gitee.comicon-default.png?t=N7T8https://gitee.com/zytscode/mcdonalds-investors/blob/master/Java%E7%9A%84%E9%9B%86%E5%90%88%E4%BB%A3%E7%A0%81

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值