Java数据结构- Map和Set

目录

  • 1. Map和Set
  • 2. Map的使用
  • 3. Set的使用

1. Map和Set

Java中,Map和Set是两个接口,TreeSet、HashSet这两个类实现了Set接口,TreeMap、HashMap这两个类实现了Map接口。
在这里插入图片描述

带Tree的这两个类(TreeSet、TreeMap)底层的数据结构是一棵红黑树(一棵特殊的二叉搜索树),带Map的这两个类(HashSet、HashMap)底层的数据结构是哈系桶

2. Map的使用

Map中常用的方法

方法作用
V get(Object Key)返回key的value
V getOrDefault(Object key,V defaultValue)返回key的value,key不存在则返回默认值
V put(K key,V value)设置key对应的value/插入一个新的键值对
V remove(Object key)删除key对应的映射关系
Set< K > keySet()返回所有的key
Collection< V > values()返回所有的value
Set<Map.Entry<K,V>> entrySet()返回所有的key-value映射
boolean containKey(Object key)判断是否包含key
boolean containValue(Object value)判断是否包含value

Map.Entry<K,V>中的方法

方法说明
K getKey()返回key
V getValue()返回Entry的value
V setValue(V value)将原来的value替换为指定的value

举个例子~~

public static void main(String[] args) {
    Map<Integer, String> map = new TreeMap<>();//new HashMap也是一样的
    map.put(1, "ZhangSan");
    map.put(2, "LiSi");
    map.put(3, "WangWu");
    //获取所有的key,返回值是Set<K>
    Set<Integer> set = map.keySet();
    System.out.println("获取所有的key:" + set);
    System.out.println("-------------");
    //获取所有的values
    Collection<String> collections = map.values();
    System.out.println("获取所有的value" + collections);
    System.out.println("-------------");
    //获取所有的key和values
    Set<Map.Entry<Integer, String>> entries = map.entrySet();
    System.out.println("获取所有的key和value" + entries);
    System.out.println("-------------");
    //key不能重复,value可以重复

    System.out.println("使用Map.Entry<Integer, String>中的setValue替换前");//
    for (Map.Entry<Integer, String> entry : entries) {
        System.out.println(entry.getKey() + " " + entry.getValue());
    }
    for (Map.Entry<Integer, String> entry : entries) {
        entry.setValue("111111");
    }
    System.out.println("替换后");
    for (Map.Entry<Integer, String> entry : entries) {
        System.out.println(entry.getKey() + " " + entry.getValue());
    }
}

输出结果:
在这里插入图片描述

注意事项:

  • 1、Map存储的是Key-Value结构的键值对,key是唯一的不能重复,value可以重复
  • 2、插入新的键值对时,如果key重复了,会更新key对应的value的值
  • 3、TreeMap插入的键值对,key不能为空,value可以为空;HashMap插入的键值对key和value都可以为空
  • 4、Map中的key想要修改,只能先删除,再重新插入

3. Set的使用

与Map不同的是,Set只存储key,不存储value

常用的方法

方法说明
boolean add()添加元素,重复的元素不会添加成功
void clear()清空整个集合
boolean contains(Object o)判断o是否在集合中
Iterator< E > iterator()迭代器
boolean remove(Object o)删除集合中的o
int size()返回set中的元素个数
boolean isEmpty()判断是否为空
Object[] toArray()将set中的元素转换为数组

public static void main(String[] args) {
    Set<Integer> set = new TreeSet<>();
    set.add(1);
    set.add(2);
    set.add(3);
    set.add(4);
    set.add(5);
    System.out.println(set);
    System.out.println(set.size());
    System.out.println(set.contains(6));
    System.out.println(set.contains(5));
    Object[] arr = set.toArray();
    System.out.println("-------------");
    for (Object o : arr) {
        System.out.print(o + " ");
    }
    System.out.println();
    System.out.println("---------------");
    Iterator<Integer> iterator = set.iterator();
    //迭代器,用于遍历set
    while (iterator.hasNext()) {
        System.out.print(iterator.next() + " ");
    }
}

输出结果:
在这里插入图片描述
注意事项:

  • 1、set只存储了key值,并且key是唯一的,不能重复
  • 2、TreeSet的底层是使用Map来实现的,插入key时,value会默认插入一个Object对象
  • 3、TreeSet不能插入null,HashSet可以插入null

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp封装picker选择器组件,支持关键字查询

CommonPicker.vue组件 路径在 components\CommonPicker.vue <template><view><uni-easyinput v-model"searchQuery" :placeholder"placeholder" /><picker :range"filteredOptions" :range-key"text" v-model&…

六位一线AI工程师总结Agent构建经验,天工SkyAgents的Agent构建实战。

原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; 六位一线AI工程师总结Agent构建经验&#xff0c;天工SkyAgents的Agent构建实战。 &#x1f31f;我们给人类新手明确的目标和具体的计划&am…

浪潮电脑文件消失怎么恢复?原来有这五种方法

无论是工作、学习还是娱乐&#xff0c;电脑都扮演着举足轻重的角色。然而&#xff0c;在使用电脑的过程中&#xff0c;我们有时会遇到一些令人头疼的问题&#xff0c;比如文件突然消失。对于使用浪潮电脑的用户来说&#xff0c;文件消失可能是一个令人焦虑的问题。本文将为您详…

用负载绿原酸的纳米复合水凝胶调节巨噬细胞表型以加速伤口愈合

引用信息 文 章&#xff1a;Modulating macrophage phenotype for accelerated wound healing with chlorogenic acid-loaded nanocomposite hydrogel. 期 刊&#xff1a;Journal of Controlled Release&#xff08;影响因子&#xff1a;10.8&#xff09; 发表时间&a…

ubuntu系统(香蕉派)设置开机自启动

基本使用参考我之前发的&#xff1a;OrangePi AIpro从上手到网站部署使用-CSDN博客 以下介绍两种设置开机自启动的方法&#xff0c;分别对应界面中配置和在命令中配置 方法1&#xff1a; 编辑开启自启动命令 sudo nano /etc/rc.local # 在该文件中添加启动执行命令&#xff…

外企跨国大数据迁移的注意事项

跨国数据迁移&#xff0c;对汽车行业来说&#xff0c;是一桩大事。跨国公司在进行这一操作时&#xff0c;会遇到不少挑战&#xff0c;比如网络延迟、数据安全、成本控制等等。今天&#xff0c;咱们就聊聊跨国大数据迁移中&#xff0c;跨国车企需要留意的几个关键点。 跨国大数据…

主流的单片机语言是 C 吗?是的话为啥不是 C++?

是c&#xff0c;而且可以预见在很长很长一段时间&#xff0c;没有巨大变革的情况下都会是c 商业项目开发光讨论语言特性优劣问题&#xff0c;是非常片面的&#xff0c;所以要看待为什么是c&#xff0c;最主要仍然是从收益和成本上来看。 刚好我有一些资料&#xff0c;是我根据…

通过 SFP 接口实现千兆光纤以太网通信4

Tri Mode Ethernet MAC 与 1G/2.5G Ethernet PCS/PMA or SGMII 的连接 在设计中&#xff0c;需要将 Tri Mode Ethernet MAC 与 1G/2.5G Ethernet PCS/PMA or SGMII 之间通过 GMII 接口互联。Tri Mode Ethernet MAC IP 核的工作时钟源为 1G/2.5G Ethernet PCS/PMA or SGMII …

心理咨询系统|心理咨询系统成品开发功能

心理咨询系统开发后端设计是一个复杂且精细的过程&#xff0c;涉及多个关键领域的专业知识和技术。本文将详细探讨心理咨询系统开发后端设计的各个方面&#xff0c;包括系统架构、数据库设计、接口开发、安全性保障以及性能优化等。 首先&#xff0c;我们来谈谈系统架构。在心理…

指针还是学不会?跟着小代老师学,进入深入理解指针(4)

指针还是学不会&#xff1f;跟着小代老师学&#xff0c;进入深入理解指针&#xff08;4&#xff09; 1回调函数2qsort使用举例2.1使用qsort函数排序整行数据2.2使用qsort排序结构体数据 3qsort函数的模拟实现 1回调函数 回调函数就是一个通过函数指针调用的函数。 如果你把函数…

【窗口函数的详细使用】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;今天主要和大家分享一下可MySQL中的窗口函数的概念&#xff0c;语法以及常用的窗口函数,希望对大家有所帮助。感谢大家关注点赞。 &#x1f49e;&#x1f49e;前路漫漫&#xff0c;希望大…

【TS】进阶

一、类型别名 类型别名用来给一个类型起个新名字。 type s string; let str: s "123";type NameResolver () > string;: // 定义了一个类型别名NameResolver&#xff0c;它是一个函数类型。这个函数没有参数&#xff0c;返回值类型为string。这意味着任何被…

【轻量化】YOLOv10: Real-Time End-to-End Object Detection

论文题目&#xff1a;YOLOv10: Real-Time End-to-End Object Detection 研究单位&#xff1a;清华大学 论文链接&#xff1a;http://arxiv.org/abs/2405.14458 代码链接&#xff1a;https://github.com/THU-MIG/yolov10 推荐测试博客&#xff1a;YOLOv10最全使用教程&#xff0…

一个月速刷leetcodeHOT100 day14 彻底搞懂二分搜索 以及相关题目

二分查找算法&#xff08;Binary Search Algorithm&#xff09; 是一种用于在已排序数组中查找特定元素的高效算法。它的基本思想是每次将待查找的区间分成两部分&#xff0c;并确定目标元素位于哪一部分中&#xff0c;然后只在目标区间中继续查找&#xff0c;直到找到目标元素…

水经微图IOS版5.3.0发布

随时随地&#xff0c;微图一下&#xff01; 水经微图&#xff08;以下简称“微图”&#xff09;IOS版&#xff0c;新版已上线。 当前版本 当前版本号为&#xff1a;5.3.0-beta 如果你发现该版本中存在问题&#xff0c;请及时反馈给我们修订。 关于我们产品的版本控制&…

国产工业级实时数据库

项目功能描述 Mars数据库的核心功能在于其能够高效地处理来自工业现场的大量传感器数据。它通过简化的可视化配置&#xff0c;允许用户轻松接入各种传感器&#xff0c;并进行数据记录和逻辑处理。Mars数据库在单机模式下支持高达120万个传感器信号的接入&#xff0c;而其分布式…

【文末附gpt升级秘笈】埃隆·马斯克芯片调配策略对特斯拉股价的影响分析

埃隆马斯克芯片调配策略对特斯拉股价的影响分析 一、引言 在现代商业环境中&#xff0c;企业间的资源调配与策略布局往往对其股价产生深远影响。据外媒CNBC报道&#xff0c;埃隆马斯克在芯片资源分配上的决策引起了业界的广泛关注。他秘密要求英伟达将原本预留给特斯拉的高端…

TMS320F280049学习3:烧录

TMS320F280049学习3&#xff1a;烧录 文章目录 TMS320F280049学习3&#xff1a;烧录前言一、烧录RAM二、烧录FLASH总结 前言 DSP的烧录分为两种&#xff0c;一种是将程序烧录到RAM中&#xff0c;一种是烧录到FLASH中&#xff0c;烧录ARM中的程序&#xff0c;只要未掉电&#x…

Vue3项目准备:utils工具插件文件夹中封装request.js配置axios请求基地址及超时时间、请求拦截器、响应拦截器

token介绍 概念&#xff1a;访问权限的令牌&#xff0c;本质上是一串字符串 创建&#xff1a;正确登录后&#xff0c;由后端签发并返回 作用&#xff1a;判断是否有登录状态等&#xff0c;控制访问权限 注意&#xff1a;前端只能判断token有无&#xff0c;而后端才能判断tok…

Camtasia Studio2024永久免费版及最新版本功能讲解

在当前数字化时代&#xff0c;视频内容的制作与编辑变得愈发重要。无论是企业宣传、在线教育还是个人Vlog制作&#xff0c;一款功能强大且易于上手的视频编辑软件成为了刚需。Camtasia Studio作为市场上备受欢迎的视频编辑与屏幕录像工具&#xff0c;凭借其强大的功能与用户友好…