java集合,看这一篇就够了

     2022-03-21     674

关键词:

Java集合是java.util下特别有用的工具类,大致分为2个系列:Collection接;口 和Map接口派生的。

按体系分,则分为四种

1.  List:有序重复的集合;

2. Set: 无序不重复的集合

3. Map: 有映射关系的集合(key-value )

4. Queue: 代表队列集合的实现(JDK5之后添加的)

 

这里捡几个不得不说的子类来说说:

1.HashSet

 如果提到Set,不得不提他的接口实现类HashSet。

特点: 1、无序,2、不能同步,即线程非安全的,3、值可以为null

提问hashCode()方法对于HashSet的重要性

答:1、首先理解下hash,哈希,它能保证通过一个对象快速查找到另一个对象。hash算法的价值在于速度。

      eg:当查询集合中某个元素时,hash算法可以直接根据元素的值计算出这个元素的存储位置,从而可以让程序快速定位该元素。

      2.相比而言,数组是根据索引定位元素的位置,HashSet没有索引这一说法,所以会根据元素的值和hashCode()方法快速算出hashCode值,来定位存储位置。

      3.为什么有了数组还需要HashSet来存储呢?

      数组是长度是不变的,所对应的元素的索引时连续的,无法自增长度。而HashSet可以增加长度,并且可以根据 hashcode快速定位存储位置,这点是数组无法达到的。

2.ArrayList && Vector 

它们是List接口的实现类,并且长度是可变的,

这里主要讲讲它们的different

ArrayList 是线程不安全的,而Vector是线程安全的。所以ArrayList想多来说性能高于Vector。

Vector是不推荐用的,通常我们使用ArrayList,为了保证ArrayList的线程安全性,我们会采用Collections工具类

List list = Collections.synchronizedList(new ArrayList());

 

3.Queue集合

Queue用于模拟队列这种数据类型。队列通常指“先进先出(FIFO)”的容器,不允许随机访问队列的元素

PriorityQueue 实现类是一种规定了排序的Queue,按大小排序的,不允许null

Deque接口是Queue的子接口,双端队列。他有个实现类ArrayDeque,基于数组实现的双端队列,实现机制类似于ArrayList

LinkList类及实现了List接口又实现了Deque接口

主要是用于栈的一些炒作,常用方法,后面再贴上来。

 

4.HashMap && HashTable

它们是Map接口的实现类,它们的关系类似于ArrayList和Vector的关系。

HashMap性能略高于HashTable,是线程不安全的。另外是允许null 的key 和null 的 value.

HashTable 相反,不允许空的值,是线程安全的,他是一种比较古老的Map实现类,

为了保证线程安全:

Map map = Collections.synchronizedMap(new HashMap());

 

结尾:

我不想把一个随笔讲的太像教科书,不然看它干嘛,直接看JDK API 好了,主要是讲讲自己要注意的常用实现类。

当然以后我技术进阶了,回头分析下源码

 

 

      

 

java中的多线程你只要看这一篇就够了

 https://www.cnblogs.com/wxd0108/p/5479442.html  查看详情

javamap集合面试题,看这一篇就够了

1、什么是Nginx,谈谈个人都理解,项目中是否用到,为什么要用,有什么优点?Nginx,是一个Web服务器和反向代理服务器用于HTTP、HTTPS、SMTP、POP3和IMAP协议。主要功能如下:1、正向、反向代理2、负载均... 查看详情

json入门看这一篇就够了

什么是JSONJSON:JavaScriptObjectNotation【JavaScript对象表示法】JSON是存储和交换文本信息的语法。类似XML。JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S为什么需要JSON提到JSON,我们就应该和XML来进行对... 查看详情

java数组,看这一篇就够了

在Java泛型出现之前,只有数组可以用来存储指定类型的对象;在自动装箱机制出现之前,只有数组可以用来存储基本数据类型;也就是说,在泛型和自动装箱机制出现之前,数组在Java当中的分量举足轻重。况且数组还是一种效... 查看详情

json格式对象该怎么传?看这一篇就够了!

一、List<Map>一般会使用在SQL语句的返回结果上代码如下:@Query(value="selectuser_name,user_agefromsys_userwheredept_id=?,nativeQuery=true)List<Map>findUserInfoById(LongdeptId);根据部门的ID查 查看详情

java注解看这一篇就够了

注解1.概念注解:说明程序的。给计算机看的注释:用文字描述程序的。给程序员看的注解的定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次... 查看详情

[转]关于深度学习,看这一篇就够了

关于深度学习,看这一篇就够了原文地址:http://www.dlworld.cn/XueXiSuanFa/13.html[日期:2016-04-26]来源:36氪 作者:[字体:大 中 小]    编者按:本文作者王川,投资人,中科大少年班校友,现居加州硅谷,个人微信号... 查看详情

elasticsearch入门,看这一篇就够了(代码片段)

Elasticsearch入门,看这一篇就够了前言可视化工具kibanakibana的安装kibana配置kibana的启动Elasticsearch入门操作操作index创建index索引别名有什么用删除索引查询索引exist索引操作document插入document查询document删除document更新document使用... 查看详情

java培训,看这一篇就够了

Java培训机构怎么选?很多想要转行的人对于选择Java培训存在很多困惑。尤其是现在很多人都会面临两个选择,自学或者是报Java培训班。报班费用太高,时间不自由。自学不知道从哪里开始学,担心自己坚持不下... 查看详情

jdk11关于java模块系统,看这一篇就够了

继2014年3月Java8发布之后,时隔4年,2018年9月,Java11如期发布,其间间隔了Java9和Java10两个非LTS(LongTermSupport)版本。作为最新的LTS版本,相比Java8,Java11包含了模块系统、改用G1作为默认GC算法、反应式流Flow、新版HttpClient等诸多... 查看详情

javanio看这一篇就够了

原文链接:https://mp.weixin.qq.com/s/c9tkrokcDQR375kiwCeV9w?现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。在前篇文章... 查看详情

逆转单向链表看这一篇就够了java(代码片段)

逆转单向链表逆转前:1->2->3->4->5->null逆转后:5->4->3->2->1->null个人博客地址:逆转单向链表方法一、循环迭代publicNodereverse(Nodehead)if(head==null||head.next==null)returnhead;//取前面节点Nodepre=head;//取后面 查看详情

jetpackworkmanager看这一篇就够了~

前言最近有读者反馈,在我的新书​​《AndroidJetpack开发:原理解析与应用实战》​​中并没有提及到WorkManager,这是因为目前这个东西在国内并不是很好用。最近因为工作需要正好研究了下,也作为补充章节分享给读者。什么... 查看详情

java中的多线程你只要看这一篇就够了

转自:https://www.cnblogs.com/wxd0108/p/5479442.html引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以... 查看详情

handler看这一篇就够了(代码片段)

Handler使用首先来熟悉一下Handler的四种使用方式,如果比较熟悉可以直接跳过:通过sendMessage消息机制来发送sendEmptyMessage(int);//发送一个空的消息sendMessage(Message);//发送消息,消息中可以携带参数sendMessageAtTime(Message,long... 查看详情

@override看这一篇就够了

一、是什么一句话:它是表示重写的注解@Override注解是伪代码,用于表示被标注的方法是一个重写方法。不写也完全可以,但强烈建议写上! 二、为什么用既然不写@Override也可以重写父类的方法,那为什么非要“多此一... 查看详情

最全排序算法及优化,看这一篇就够了(代码片段)

最全排序算法总结看这一篇就够了没有经过总结的知识是沉重的,无用的瞧一瞧~博健的LeetCode题解:Gitbook版本传送门博健的LeetCode题解:CSDN传送门有趣的CSS:Gitbook传送门前端进阶笔记:Gitbook传送门目录... 查看详情

java中的多线程你只要看这一篇就够了

引 如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一... 查看详情