当前位置: 首页 > news >正文

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()返回
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("-------------");//获取所有的valuesCollection<String> collections = map.values();System.out.println("获取所有的value" + collections);System.out.println("-------------");//获取所有的key和valuesSet<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();//迭代器,用于遍历setwhile (iterator.hasNext()) {System.out.print(iterator.next() + " ");}
}

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

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

相关文章:

  • JVM参数配置
  • Vue 实现的精彩动画效果
  • JVM类加载机制详解(JDK源码级别)
  • 美国年轻人热衷床上“摆烂”,沃尔玛发掘床上用品新商机!
  • 3168. 候诊室中的最少椅子数
  • C# PaddleOCR 单字识别效果
  • pyopengl 立方体 正投影,透视投影
  • 人工智能任务5-高级算法工程师需要学习哪些课程与掌握哪些能力
  • 服务器上创建搭建gitlab
  • LangChain学习之prompt格式化与解析器使用
  • 基于EasyX的贪吃蛇小游戏 - C语言
  • 使用Docker辅助图像识别程序开发:在Docker中显示GUI、访问GPU、USB相机以及网络
  • Java中常见错误-泛型擦除及桥接方法问题及解决方案
  • Linux 程序守护脚本
  • 跨境电商|Facebook Marketplace怎么做?
  • .gitignore 文件
  • qt中实现多语言功能
  • 数据结构与算法之 leetcode 513. 找树左下角的值 (BFS) 广度优先
  • mysql中的函数
  • Shell正则表达式与文本处理器
  • 双指针法 ( 三数之和 )
  • 感染恶意代码之后怎么办?
  • 【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式
  • 多角度剖析事务和事件的区别
  • 模糊小波神经网络(MATLAB 2018)
  • HTML布局
  • 数据结构:双链表
  • Python3 元组、列表、字典、集合小结
  • 2024会声会影破解免费序列号,激活全新体验!
  • 机器学习18个核心算法模型