java map取第一个元素_Java Set接口 Map 与枚举

4bb0c32c9a8af434100f06a9a7941433.png

Set接口

概述

一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1e2,并且最多包含一个 null 元素

特点

  1. Set接口是无序的
  2. Set 是继承于Collection的接口。它是一个不允许有重复元素的集合。
  3. Set可以存储null值,但是null不能重复
  4. Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。

HashSet类

概述

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

特点

  1. 底层数据结构是 哈希表,HashSet的本质是一个"没有重复元素"的集合,它是通过HashMap实现的。HashSet中含有一个"HashMap类型的成员变量"map,在HashSet中操作函数,实际上都是通过map实现的。
  2. 哈希表保证唯一 依赖hashcode和equals方法

​ 原理: ​ 首先判断hashCode是否相同 ​ 不相同 ​ 就存储到集合中 ​ 相同 ​ 比较equals方法是否相同 ​ 相同 就不存储 ​ 不相同就以链表的方式存储到集合中

  1. 哈希表导致元素存储无序主要因为系统通过哈希算法计算出来的索引和对象本身的hashCode本身有关,所以这个整数值是无序的,从而存储到集合中自然就是无序的

HashSet存储自定义对象去除重复元素需要重写 hashCode和equals方法

TreeSet

概述

基于 TreeMapNavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。

特点

  1. TreeSet 是一个有序的并且可排序的集合,它继承于AbstractSet抽象类,实现了NavigableSet, Cloneable, java.io.Serializable接口。
  2. TreeSet是基于TreeMap实现的。TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。这取决于使用的构造方法。
  3. TreeSet是非同步的,线程不安全的,效率高。
  4. 二叉树保证元素唯一

​ 【

​ 第一个元素进来作为根节点存储

​ 后面元素进来和根节点比较

​ 大了,放在元素的右边

​ 小了,放在元素的左边

​ 相等,设置原值

  1. 二叉树保证元素可排序 --> 利用二叉树中序遍历取元素的特点。
  2. 注意中文排序可以使用 Collator类处理
  3. 建议使用三目运算符进行排序
  4. 针对返回值是double类型的,可以考虑使用三目转换成int类型的结果

LinkeHashSet

概述

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List接口外,LinkedList类还为在列表的开头及结尾getremoveinsert` 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。

特点

  1. 底层数据结构是 链表和哈希表
  2. 链表保证元素有序
  3. 哈希表保证元素唯一

Map集合

Map集合提供了集合之间一种映射关系

让集合和集合之间产生关系

Map集合的特点

1.能够存储唯一的列的数据(唯一,不可重复) Set

2.能够存储可以重复的数据(可重复) List

3.值的顺序取决于键的顺序

4.键和值都是可以存储null元素的

一个映射不能包含重复的键。

每个键最多只能映射到一个值。

常用功能

1.添加功能

​ V put(K key, V value)

​ void putAll(Map<? extends K,? extends V> m)

2.删除功能

​ V remove(Object key)

​ void clear()

3.遍历功能

​ Set keySet()

​ Collection values()

​ Set> entrySet()

4.获取功能

​ V get(Object key)

5.判断功能

​ boolean containsKey(Object key)

​ boolean containsValue(Object value)

​ boolean isEmpty()

6.修改功能

​ V put(K key, V value)

​ void putAll(Map<? extends K,? extends V> m)

7.长度功能

​ int size()

枚举

何为枚举?

枚举是在一定范围内取值,并且这个值必须是枚举类型中的任意一个,并且只能有一个

特点:

1.必须在规定范围内取值

2.这个值只能取一个

3.这个值可以是规定范围内的任意一个

枚举中常用的方法

String name()

返回此枚举常量的名称,与其枚举声明中声明的完全相同。

int ordinal()

返回此枚举常数的序数(其枚举声明中的位置,其中初始常数的序数为零)。

static >

T valueOf(类 enumType, String name)

返回具有指定名称的指定枚举类型的枚举常量。

T valueOf(String name)

T[] values();

枚举的特点总结

枚举既然是一个类,那么枚举是否有构造方法,成员方法,静态方法,静态变量,成员变量,抽象方法?

有的话,有意义吗?

1.枚举中所有的成员,必须出现在枚举对象的下面

2.如果枚举类中有一个成员,那么 枚举对象最后不能省略分号

3.枚举中构造方法必须私有

4.抽象方法有意义 - 可以用来描述某个枚举成员的信息,提高程序的可读性

5.枚举也是switch语句中 的常量 形式之一

switch语句中可以有哪些?

byte short int char String 枚举

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

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

相关文章

Python中yield简单用法

Python中yield简单用法 你或许知道带有yield的函数在Python中被称之为generator&#xff0c;那何为 generator&#xff1f; 我们暂时抛开generator&#xff0c;先从一个常见编程题目开始&#xff0c;循序渐进了解yield的概念。 生成Fibonacci数列 Fibonacci数列是一个经典递…

js 用下标获取map值_js map方法处理返回数据,获取指定数据简写方法

map方法处理返回数据&#xff0c;获取指定数据简写方法前言后端返回数据为数组列表时&#xff0c;通常比较全面&#xff0c;包含了很多不需要的数据&#xff0c;可以通过 map 方法处理返回数据&#xff0c;筛选出想要的数据例如// 返回数据res [{id: 1,name: zhangsan,age: 16…

《Python Cookbook 3rd》笔记汇总

文章目录一、数据结构二、字符串和文本三、数字、日期和时间四、迭代器与生成器五、文件与IO一、数据结构 标题关键词1.1&#xff1a;拆分序列后赋值给多个变量可迭代对象、拆分赋值1.2&#xff1a;拆分任意长可迭代对象后赋值给多个变量可迭代对象、拆分赋值、星号表达式1.3&…

mysql hp ux_hp ux apa 切换

(HP-UX Only) OR - 1 heartbeat network using APA with 2 trunk members (HP-UX Only) OR - 1 heartbeat network with serial line (HP-UX Only) OR......一、 概述 HP 的 APA 软件提供两种网卡冗余切换模式,用以实现网络高可用性...0x000000000000 hp_apa HP-UX 11i v3 Prer…

Python中[:]与[::]的用法

Python中[:]与[::]的用法 概述 [:]与[::]语法是通用序列操作&#xff08;Common Sequence Operations&#xff09;其中的两个。用[:]或[::]对多数序列类型&#xff08;可变的或不可变的&#xff09;&#xff08;如字符串、列表等&#xff09;序列中元素进行截取。 [:]的用法…

mysql redis 中间件_Docker快速搭建Mysql社区版,Redis,MongoDb、MQ等等中间件。

一&#xff1a;安装docker社区版。Centos系列(最好用7以上的版本&#xff0c;docker需要3.1以上的linux内核版本)sudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl start dockersudo docker run hello-world如果你敲docker info需要root密码&#xff0c;…

JavaScript中String的slice(),substr(),substring()三者区别

JavaScript中String的slice()&#xff0c;substr()&#xff0c;substring()三者区别 共同之处 从给定的字符串中截取片段&#xff0c;并返回全新的这片段的字符串对象&#xff0c;且不会改动原字符串。 具体不同之处 slice() str.slice(beginIndex[, endIndex])参数描述be…

pythontuple数据类型_数据类型-元组Tuple

Python Tuple用于存储不可变python对象的序列。元组类似于列表&#xff0c;因为可以改变列表中存储的项的值&#xff0c;而元组是不可变的&#xff0c;并且不能改变存储在元组中的项的值。元组可以写成用小括号括起来的逗号分隔值的集合。元组可以定义如下。T1 (101, "Ay…

《剑指Offer》24:反转链表

题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转链表并输出反转后链表的头节点。链表节点定义如下&#xff1a; public static class ListNode{public int val;public ListNode next;public ListNode(int val) {this.val val;} }分析 方法一&#xff1…

python两个for循环为什么第二个循环里值不变_两个for循环,第二个只在第一个迭代python上执行...

我是一个pythonnoob&#xff0c;我试图比较两个文件中的行之间的值&#xff0c;如果行在第二个文件中&#xff0c;则输出“line name”&#xff0c;然后输出1&#xff1b;如果第二个文件中缺少该行&#xff0c;则输出0。第一次迭代返回1&#xff0c;因为该行在第二个文件中&…

python如何问问题_学会正确的提问

可能很多读者看到这个标题会感觉很可笑&#xff0c;提问谁不会啊&#xff0c;互联网时代&#xff0c;提问还不是一句话的事情&#xff1f;个人、技术群、论坛里都可以提问啊&#xff0c;「你好」「在吗&#xff1f;」「有人用过 xx 工具吗&#xff1f;」。首先&#xff0c;提问…

如何保证接口的幂等性

如何保证接口的幂等性 什么是幂等性 幂等性是系统服务对外一种承诺&#xff0c;承诺只要调用接口成功&#xff0c;外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态&#xff0c;并且失败之后必然会有重试。 通俗地说&#xff0c;接口幂等性就是…

mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。使用mysql二进制方式连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。实例以下是从命令行中连接my…

xposed模块编写教程_太极xposed模块使用教程

今天给大家分享一下太极xposed模块使用教程。很多小伙伴说下载不到Xposed模块&#xff0c;这个网上其实很多&#xff0c;但是第三方的下载站就算了吧。我也是一个深受其害的网瘾少年&#xff0c;只要是下载站的软件&#xff0c;一不留心一次性电脑可能会多安装好多个软件&#…

如何使用mysql添加更新_Mysql 存在既更新,不存在就添加(sql语句)

讨人喜欢的 MySQL replace into 用法(insert into 的增强版)在向表中插入数据的时候&#xff0c;经常遇到这样的情况&#xff1a;1. 首先判断数据是否存在&#xff1b; 2. 如果不存在&#xff0c;则插入&#xff1b;3.如果存在&#xff0c;则更新。在 SQL Server 中可以这样处理…

linux + nginx + mysql + php 百度网盘_5.LNMP(Linux + Nginx + MySQL + PHP)环境安装

1.安装Nginx:yum install yum-priorities -ywget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmrpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpmyum -y install nginxsystemctl start nginx.servicesystemctl stop ngin…

LeetCode - Easy - 28. Implement strStr()

Topic Two Pointers, String Description https://leetcode.com/problems/implement-strstr/ Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. needle /ˈniːdl/ n.针 haystack /ˈheɪ…

mysql item_MySQL源代码:关于MySQL的Item对象

前篇介绍了MySQL如何从SQL语句转换成一个内部对象。本文是前篇的延续&#xff0c;将更加详细的介绍WHERE语句对应的Item对象。1. Item对象MySQL InternalMySQL Internals Manual较为详细的介绍了Item对象。Item对象经常被称作"thingamabob"(A thingamabob is a noun …

python的发展趋势图_用Python绘制趋势图

我在数据帧中有以下数据&#xff1a;-------------------------------------------------------| Physician Profile Id | Program Year | Value Of Interest |-------------------------------------------------------| 1004777 | 2013 | 83434288.00 || 1004777 | 2014 | 89…

mysql的实现类注解_Mybaits (XML方式:无需在写Dao的实现类 注解方式:Dao的实现类与Mapper都可以不写 重点理解)...

Maven的pom.xml 坐标配置4.0.0Mybatis_mavenday01_mbatis1.0-SNAPSHOTjarorg.mybatismybatis3.4.5mysqlmysql-connector-java5.1.45junitjunit4.12testorg.apache.maven.pluginsmaven-compiler-plugin2.3.21.81.8UTF-8mybatis的配置文件/p>PUBLIC "-//mybatis.org//DTD…