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,一经查实,立即删除!

相关文章

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

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

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

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

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…

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

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

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…

前后分离接口规范

前后分离接口规范 随着互联网的高速发展&#xff0c;前端页面的展示、交互体验越来越灵活、炫丽&#xff0c;响应体验也要求越来越高&#xff0c;后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻&#xff0c;从而导致前后端研发各自专注于自己擅长的领域深耕…

MySQL吉连_Learn Jdbc : Java, Jdbc, Odbc

Learn Jdbc : Java, Jdbc, Odbc 介绍Learn Jdbc : Java, Jdbc, OdbcLearn JDBC we precisely name what we are going to help you for Learning.As you are Beginner we keep in mind the same thing,we think like you and try to Build Apps Like Java Deep Learning,Java B…

java五子棋源代码_java 五子棋游戏源码

【实例简介】【实例截图】【核心代码】package game;import java.applet.Applet;import java.applet.AudioClip;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Container;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.even…

java图形用户登录界面_Java简单登录图形界面

一.登录界面1.程序代码1 import java.awt.*;//导入awt包2 import javax.swing.*;//导入swing包3 import java.awt.event.ActionListener;//导入awt包中的监听器事件包4 import java.awt.event.ActionEvent;//导入awt包中的ActionEvent事件包56 public class EnterScreen extend…

北大青鸟java y2_Struts-2 北大青鸟 Y2学年 项目案例使用 2框架开发租房网站 Java Develop 249万源代码下载- www.pudn.com...

文件名称: Struts-2下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 10225 KB上传时间: 2016-01-03下载次数: 0提 供 者: 姜鹏详细说明&#xff1a;北大青鸟 Y2学年 项目案例使用Struts 2框架开发租房网站-My English LOW文件列表(点击判断是否您需要的文件&#xff0c…

java i o是什么流_Java I/O流的总结

I/O的类结构图I/O的分类根据处理的数据类型分为&#xff1a;字节流和字符流。根据数据流向分为&#xff1a;输入流和输出流。流又可分为节点流和处理流。节点流直接与数据源相连处理流与节点流一起使用&#xff0c;在节点流的基础上&#xff0c;再嵌套一层。提高文件的读取效率…

java web聊天室私聊map_java websocket聊天室示例(springboot)

【实例简介】【实例截图】【核心代码】package com.example.demo;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ConcurrentHashMap;import javax.websocket.OnClose;import …

Java 内存映射读取文件_Java内存映射 大文件轻松处理|chu

前言内存映射文件(Memory-mapped File)&#xff0c;指的是将一段虚拟内存逐字节映射于一个文件&#xff0c;使得应用程序处理文件如同访问主内存(但在真正使用到这些数据前却不会消耗物理内存&#xff0c;也不会有读写磁盘的操作)&#xff0c;这要比直接文件读写快几个数量级。…

LeetCode - Easy - 118. Pascal‘s Triangle

Topic Array Description https://leetcode.com/problems/pascals-triangle/ Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle. In Pascal’s triangle, each number is the sum of the two numbers directly above it. Example…

LeetCode - Easy - 119. Pascal‘s Triangle II

Topic Array Description https://leetcode.com/problems/pascals-triangle-ii/ Given an integer rowIndex, return the rowIndexth row of the Pascal’s triangle. Notice that the row index starts from 0. In Pascal’s triangle, each number is the sum of the tw…

java原始模型模式_java设计模式--原始模型模式

简介原始模型模式属于对象的创建模式。通过一个原型对象来指明要创建对象的类型&#xff0c;然后用复制原型对象的方法来创建出更多同类型的对象。Java所有的类都是从java.lang.Object类继承来的&#xff0c;Object类提供clone()方法对对象进行复制。一般调用clone()方法需要满…

java并行计算同步返回_Java大文本并行计算实现过程解析

Java大文本并行计算实现过程解析简单提高文本读取效率&#xff0c;使用BufferedReader是个不错的选择。速度最快的方法是MappedByteBuffer&#xff0c;但是&#xff0c;相比BufferedReader而言&#xff0c;效果不是非常明显。也就是说&#xff0c;后者虽然快&#xff0c;但也快…

java mvc 菜鸟_【java框架】SpringMVC(1)--SpringMVC入门

1.SpringMVC框架认识Spring MVC是一个基于MVC模式的Web框架&#xff0c;SpringMVC作为Spring中的一个模块&#xff0c;它与Spring能够无缝集成&#xff0c;主要用于解决企业Web开发中常见的问题&#xff1a;如参数接收、文件上传、表单验证、国际化等等。2.SpringMVC HelloWorl…

php设置cookie 域名,php如何设置cookie对整个域名有效?

php设置cookie对整个域名有效的方法&#xff1a;由setcookie函数让cookie对整个域名有效&#xff0c;代码为【setcookie("cookie_test", this is cookie test, time()3600,"/",“】。php设置cookie对整个域名有效的方法&#xff1a;默认情况下的cookie仅对…

我的世界一个程序导致JAVA,Java地位无可动摇的12个原因

如今&#xff0c;面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年…