java map与set的区别_java 集合(list,set,map)三者之间的关系和区别

java 集合(list,set,map)三者之间的关系和区别

一:先上一张关系图,让大家看的更明白。

ab549ceddff2d5c7351af65bdadd6d7d.png

备注:其中红色部分为实现,其他地方均为接口。

二:各自的特点。

List 有序,可重复ArrayList优点: 底层数据结构是数组,查询快,增删慢。缺点: 线程不安全,效率高Vector优点: 底层数据结构是数组,查询快,增删慢。缺点: 线程安全,效率低LinkedList优点: 底层数据结构是链表,查询慢,增删快。缺点: 线程不安全,效率高

Set 无序,唯一

HashSet

底层数据结构是哈希表。(无序,唯一)

如何来保证元素唯一性?

1.依赖两个方法:hashCode()和equals()

LinkedHashSet

底层数据结构是链表和哈希表。(FIFO插入有序,唯一)

1.由链表保证元素有序

2.由哈希表保证元素唯一

TreeSet

底层数据结构是红黑树。(唯一,有序)

1. 如何保证元素排序的呢?

自然排序,比较器排序

2.如何保证元素唯一性的呢?

根据比较的返回值是否是0来决定

三:我们怎么来使用。

针对Collection集合我们到底使用谁呢?

唯一吗?

是 > set > 排序吗 ?

是:TreeSet或LinkedHashSet

否:HashSet

否 > list > 要安全吗?

是:vector

否:ArrayList 或 LinkedList

四:Map。

有序:TreeMap

无序:HashMap和HashTable

HashMap

jdk1.7 底层为数组+单链

jdk1.8 底层为数组+单链+红黑树,默认长度为16,为什么是16不是其他的数字呢,只要是2的次幂就可以了。负载因子为0.75,当链表的长度大于8时,转为红黑树。

LinkedList

LinkedList是基于链表的,它是一个双向链表,每个节点维护了一个prev和next指针。同时对于这个链表,维护了first和last指针,first指向第一个元素,last指向最后一个元素。LinkedList是一个无序的链表,按照插入的先后顺序排序,不提供sort方法对内部元素排序。

HashSet

HashSet是基于HashMap来实现的,操作很简单,更像是对HashMap做了一次“封装”,而且只使用了HashMap的key来实现各种特性,而HashMap的value始终都是PRESENT。

HashSet不允许重复(HashMap的key不允许重复,如果出现重复就覆盖),允许null值,非线程安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

adf时间作用域_ADF任务流:页面片段的托管bean作用域

adf时间作用域介绍 当我们使用ADF任务流并需要实现一些特定于流的业务逻辑或存储一些与流相关的信息时,我们通常使用pageFlowScope托管bean。 而且,当我们需要为流的活动(页面或页面片段)提供服务时,我们会为此类托管b…

IMA文件如何打开,winimage使用方

一般先用UltraISO打开一个系统的镜像文件(.iso)。其中有些文件(尤其是.ima,img)比如下面雨林木风Ghost系统盘的这个IMA文件,我们先提取到桌面 用WinImage打开这个文件即可发现这个IMA文件整合了很多东西。所以&#x…

Java的几何布朗运动

Wiener过程是连续时间随机过程,以纪念Norbert Wiener命名。 通常用于用随机成分表示噪音或财务状况。 可以计算几何布朗运动以可视化某些界限(以分位数表示)以暗示绝对范围。 为了进行计算,需要以下参数: &#xff0…

mongodb java id 查询数据_java 用 _id 查找 MongoDB 下的数据

找网上的资料看了下增删改查,等日后补上。已经实现了数据的插入,现在想通过 _id属性来查找数据。一开始看到 类似 55b321df715cc162076eb466 这么一长串的内容觉得是string类型。但是发现并不能搜索到结果,在网上搜到了解决方案:S…

java maven部署_eclipse中maven项目部署到tomcat

下面就一一介绍这几种部署方式:1.打war包到tomcat/webapps目录这种方式其实跟非maven项目没什么区别,就是打包的方式不同之后在target目录下会生成war包,复制到tomcat/webapps目录即完成部署。2.使用tomcat-maven插件,在pom.xml的…

word 论文排版 —— 按指定格式章节的自动编号

在word中如何实现章节标题自动编号 标题样式与标题的编号是两个步骤,为标题建立编号是在为标题样式确定的基础后进行的。这是显而易见的,也即只有先定义了多级标题(也可使用 word 自带的标题样式),才可为这些多级标题自…

北斗有 35 颗卫星,而 GPS 有 24 颗卫星,为什么二者数量不同?

作者:知乎用户链接:https://www.zhihu.com/question/21092045/answer/17164418来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。反对目前的两个不靠谱回答!需要的卫星数目和别人占坑没有…

sharesdk短信验证码的集成

在ShareSDK官网http://mob.com/注册并创建Android应用.申请APP_key,下载SDK等 根据官网开发文档导入SDK,目录结构如下 将以上文件按需放入Android Studio项目所要使用SMSSDK的Module所在的Libs里面,再在Module的build.gradle里面将libs加入仓库(reposito…

java四神兽_SpringCloud五大神兽之Eureka

注册中心概述什么是注册中心?相当于服务之间的‘通讯录’,记录了服务和服务地址之间的映射关系。在分布式架构中服务会注册到这里。当服务需要调用其他服务时,就在注册中心找到其他服务的地址,进行调用注册中心的主要作用&#xf…

windows下dubbo-admin和zookeeper安装部署

1. 概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、…

jpush java api_JPush極光推送Java服務器端API

產品功能說明極光推送(JPush)是一個端到端的推送服務,使得服務器端消息能夠及時地推送到終端用戶手機上,讓開發者積極地保持與用戶的連接,從而提高用戶活躍度、提高應用的留存率。極光推送客戶端支持 Android, iOS 兩個平台。本 Android SDK …

Maven详解(转)

转自 https://www.cnblogs.com/hongwz/p/5456578.html 一.前言 以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar 包的。最近一段时间在项目过程中使用Maven,用Maven构建的web项目,其项目…

java商品编写代码_商品品牌业务之后台Java代码的编写

今天是刘小爱自学Java的第146天。感谢你的观看,谢谢你。商品品牌业务之后台Java代码的编写-1.jpg (50.46 KB, 下载次数: 1)2021-2-5 00:22 上传学习计划安排如下:昨天实现了前端页面的编写以及发送请求,今天关于异步请求工具axios的简单说明。…

java中8种数据类型和默认值所占字节数

java 8种基本数据类型的默认值及所占字节数通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge;2 3 public class Ceshi { 4 int a; 5 double b; 6 boolean c; 7 char d; 8 float f; 9 byte e; 10 long h; 11 short j; 12 public static void main(String…

软件测试实验1:为三角形问题编写一个Java程序,并用Junit测试程序

实验报告 实验内容: 1.Install Junit(4.12), Hamcrest(1.3) with Eclipse 2.Install Eclemma with Eclipse 3.Write a java program for the triangle problem and test the program with Junit. 实验步骤: 1.在eclipse中安装Junit、Hamcrest和eclemma。…

SurfaceFlinger与Surface概述

基本原理: SF一个Client对应一个app中的SurfaceComposerClient, 分别是Binder的n端和b端,主要用来CreateSurface 一个app中有多个Activity,一个Activity一般有一个Surface(除SurfaceView,一个View就有一个Surface)&…

拼图项目动手指南

Jigsaw项目将把模块化引入Java平台,根据原始计划,它将在12月10日完成功能。 所以我们在这里,但是拼图在哪里? 在过去的六个月中肯定发生了很多事情: 原型问世 ,内部API的迫在眉睫的删除引起了很大的骚动 &…

java实现回文验证_LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串

文章目录一、题目描述1.1 题目验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a cana…

java开发门禁指纹,指纹门禁

大兀人脸识别控制系统USB指纹仪DW9拓扑图(指纹为java系统直接采集、云或控制板直接比对,无需二次注册,人脸为htttp上传服务器或rtsp视频流比对方案)大兀活体指纹门禁采用BS架构,已集成进大兀人脸识别系统,如二次开发可直接调用jav…

使用Selenide进行有效的UI测试

等待奇迹 圣诞节是奇迹的时刻。 在新的一年的前夕,我们都为下一年制定了计划。 我们希望所有问题都将在最后一年消失,在来年出现奇迹。 每个Java开发人员都梦想着创造一个奇迹,使他成为世界上最有效的Java开发人员。 我想向你展示这样的奇…