轻松掌握 Map 和 Set

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

概念

map 和 set 是一种专门用来搜索和查询的容器或数据结构,效率很高。是为了解决在 “增删查改” 情况下使用的数据结构。
map set 模型:一般把搜索的数据称为关键字 (key) ,和关键字对于的称为值(value) 称为 key-value 的键值对。纯 key 模型setkey - value 模型map

Map

HashMap 在存储元素的时候,是根据一个函数进行存储的,具体存储到哪里,由函数来确定。这个函数就是哈希函数。所以输出的时候,并不是按照存储顺序进行输出的。Map是一个接口类,没有继承自Collection,类中存储的是 <K,V> 结构的键值对,并且 K 一定是唯一的,不能重复。在遇到相同的 K 的时候,V 是可以改变的。

put

在 map 当中,put 是放入元素的意思,有两个参数,第一个是 key ,第二个是 value ,代码如下:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("abc",3);
    map.put("word",2);
    map.put("hello",4);
    System.out.println(map);
}

运行结果如下:
在这里插入图片描述
输出的时候并不是按照输入顺序输出的。
put 如果存储元素的时候,如果 key 值相同的话,val 值会覆盖。代码如下:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("abc",3);
    map.put("word",2);
    map.put("hello",4);
    map.put("abc",5);
    System.out.println(map);
}

运行结果如下:
在这里插入图片描述

get

使用 get 通过 key 来获取对应的 value 的值。代码如下:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("abc",3);
    map.put("word",2);
    map.put("hello",4);
    int ret = map.get("abc");
    System.out.println(ret);
}

运行结果如下:
在这里插入图片描述

getOrDefault

getOrDefault 方法有两个参数,一个是 key ,如果没有 key 的话,就返回设置的默认值。如果有 key 的话,就返回 key 的 value 。代码如下:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("abc",3);
    map.put("word",2);
    map.put("hello",4);
    System.out.println(map.getOrDefault("abc",98));
}

运行结果如下:
在这里插入图片描述
因为 abc 存在,所以返回 abc 的 value 。就是 3 。

remove

remove 方法有一个参数,参数是输入的 key ,返回对应的 value 。如果没有 key 的话,就返回 null 。代码如下:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("abc",3);
    map.put("word",2);
    map.put("hello",4);
    Integer ret2 = map.remove("abc");
    System.out.println(ret2);
}

运行结果如下:
在这里插入图片描述

Set

set 是一个集合,存入里面的数据会自动去重。Set 是继承自 Collection 的接口类,Set 中只存储了 Key 。

entrySet

entrySet 会把 map 的 key 和 value 放在一起,然后变成 set 类型。代码如下:

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("abc",3);
    map.put("word",2);
    map.put("hello",4);
    map.put(null,null);
    Set<Map.Entry<String,Integer>> entrySet =  map.entrySet();
    for (Map.Entry<String, Integer> entry : entrySet) {
        System.out.println(entry.getKey()+"->"+entry.getValue());
    }
}

运行结果如下:
在这里插入图片描述

set 自动去重

放入 set 的数据会自动去重,代码如下:

public static void main4(String[] args) {
    Set<Integer> set = new HashSet<>();
    set.add(1);
    set.add(2);
    set.add(3);
    set.add(1);
    System.out.println(set);
}

运行结果如下:
在这里插入图片描述

Iterator 接口

set 可以通过 Iterator 接口来输出内容,代码如下:

public static void main(String[] args) {
    Set<Integer> set = new HashSet<>();
    set.add(1);
    set.add(2);
    set.add(3);
    set.add(1);
    Iterator<Integer> iterator = set.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}

在这里插入图片描述

nftables实战:用SetMap轻松管理上千个IP的黑白名单(含动态封禁脚本) 本文深入探讨了nftables的SetMap数据结构在构建智能IP防火墙系统中的应用,通过实战案例展示了如何高效管理上千个IP的黑白名单,并实现动态封禁功能。文章详细介绍了nftables的高级配置技巧、性能优化策略以及生产环境部署方案,帮助读者应对复杂的网络攻击态势。 阅读详情

相关推荐

nftables实战:用SetMap轻松管理上千个IP黑名单(附自动封禁脚本)

本文详细介绍了如何利用nftables的SetMap功能高效管理上千个IP黑名单,并提供了自动封禁脚本实现智能防护。通过实战案例展示nftables防火墙配置,帮助管理员轻松应对CC攻击恶意爬虫,提升网络安全防护能力。

weixin_30485379的博客 403

MapSet

MapSet是集合中的两个接口,Set实现了Collection接口,而Map没有实现。Map下面又有很多子类,我们主要研究HashMapTreeMapSet同样有很多子类,主要研究HashSetTreeSet。在理解掌握它们之前,我们要先研究二叉搜索(又叫二叉排序),因为TreeMap、TreeSet底层是红黑,红黑是一种特殊的二叉搜索,HashSet、HashMap底层是哈希表,哈希表中也涉及到了红黑。一:二叉搜索二叉搜索又叫二叉排序,它可以是空,具有以下性质:(1)若它的左

yahid的博客 758

集合框架大冒险:List、SetMap带你走进数据管理的奇妙世界

无论是要有序的列表、无复的集合,还是键值对映射,Java都给你准备好了现成的工具。是 Java 集合框架的顶级接口,它规定了一系列管理数据的方法,像添加、删除、查找等。你可能不会直接用它,但你会用到它的具体实现类,比如 List。它们各自有自己的特点使用场景,跟着我一起走进这个集合框架的世界吧!就像是你家里存放物品的柜子,你可以根据需求选择合适的“抽屉”来装东西。的,就像是词典一样。允许你快速根据键找到对应的值,非常适合处理需要一一对应关系的数据。就像是你的收集品展示柜,每个东西都是不一样的。

m0_63141213的博客 568

Java的Set集合里面存储Map类型测试。

文章目录结论:会覆盖测试输出不会覆盖测试输出 结论: 覆盖发生条件:多个Map中的key—value必须完全一样,Set集合中后面的map会覆盖前面的Map。 如果不想被覆盖,必须保证Map中的value与其它map的value不一样。 会覆盖测试 HashSet<Map<String,Object>> value12 = new HashSet<>(); Map<String,Object> map5 = new HashMap<&

中年人 1510

Set集合Map集合使用

5、Set集合 (1)java.util.Set接口 (2)特点:无序的集合,不能存储复的元素。 (3)接口不能实例化 (4)抽象方法: Set接口继承了Collection接口。 int size() 返回此集合中的元素数。 boolean add(E e) 确保此集合包含指定的元素(可选操作)。 boolean remove(Object o) 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 void clear() 从此集合中删除所有元素(可选操作)。 boolean isEm

qq_43803695的博客 663

setmap调用什么方法_ECMAScript 6基础-Set单值集合Map键值对集合的初始化、遍历、常用方法详解,Set常用于数组...

ECMAScript 6基础(五)ECMAScript 6也叫ECMAScript 2015,它是2015年发布一个继ES5.1以后的一个版本,不建议直接在浏览器里使用(兼容性低)在学习ES6的过程中,我们建议使用 nodejs 作为学习环境,NodeJS可以兼容ES6Set单值集合Set是一个类数组,其实它是一个不复的类数组,而且Set只有值没有键Set的初始化首先,创建一个Set,可以有参数...

weixin_33719097的博客 313

Java中,Map、List集合遍历、方式超详细总结

Java面试总结,Java集合常问内容,集合的基本概念,Map集合、List集合

weixin_55746254的博客 5664

轻松掌握数据结构MapSet

MapSet以及哈希冲突讲解,依旧简单易懂~ 本文主要讲解了数据结构中的MapSet及其底层实现二叉搜索。首先介绍了二叉搜索的概念、查找、插入删除操作的实现方法,分析了其性能特点。接着阐述了MapSet在实际场景中的应用,解释了Key-Value模型与纯Key模型的区别。文章详细说明了Map接口的常见用法注意事项,包括TreeMapHashMap的特性差异,并通过代码示例演示了TreeMap的基本操作。最后指出TreeSet/TreeMap需要元素可比较,哈希冲突

哦虎!的博客 773

轻松愉快的搞定ES6中的MapSet

ES6出来也有一段时间了,现在最新的标准都已经到ES10了,所以说如果还对ES6不了解的同学真的要加把劲了。很多人抱怨前端发展太快,框架、知识点更新太频繁,我想说的是,如果你没法改变前端的发展方向,那就只有一个字干。今天小编整理了有关MapSet这两个新的数据结构的相关知识,下面我们一起看下。 Map Map对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造...

新技术革命 341

有序的map_轻松愉快的搞定ES6中的MapSet(值得收藏)

ES6出来也有一段时间了,现在最新的标准都已经到ES10了,所以说如果还对ES6不了解的同学真的要加把劲了。很多人抱怨前端发展太快,框架、知识点更新太频繁,我想说的是,如果你没法改变前端的发展方向,那就只有一个字 干。今天小编整理了有关MapSet这两个新的数据结构的相关知识,下面我们一起看下。MapMap对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造函数Map可以接受...

weixin_39616565的博客 417

接受map_轻松愉快的搞定ES6中的MapSet(值得收藏)

ES6出来也有一段时间了,现在最新的标准都已经到ES10了,所以说如果还对ES6不了解的同学真的要加把劲了。很多人抱怨前端发展太快,框架、知识点更新太频繁,我想说的是,如果你没法改变前端的发展方向,那就只有一个字 干。今天小编整理了有关MapSet这两个新的数据结构的相关知识,下面我们一起看下。MapMap对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造函数Map可以接受...

weixin_39564755的博客 69

Java基础之集合篇(内容超详细,带你轻松搞懂List、SetMap的使用)

Java集合的一个小结,包括ColletionMap等。

weixin_43553142的博客 1854

Java Map —>Set(Map转为Set)

package Map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Test { public static void main(String[] args) { Map<Integer,String> map= new HashMap<>(); map.put(1

qq_45858803的博客 1610

从英伟达错过特斯拉看技术投资:趋势判断与风险决策的认知博弈

在科技投资领域,趋势判断与风险评估是决定长期价值的关键。技术投资决策本质上是对未来技术路径市场爆发的预判,涉及对技术栈颠覆性、生态位价值执行能力的综合评估。从原理上看,早期投资需要平衡战略协同与范式捕获,既要关注技术点的先进性,更要分析系统生态的复合增长潜力。其技术价值在于通过期权思维管理不确定性,用小额投资保持信息通道,避免因认知偏差错失指数级回报。应用场景广泛覆盖技术创业、开发者选型及企业战略布局,尤其适用于评估像电动汽车、自动驾驶这类融合硬件、软件与能源的跨领域创新。本文以英伟达与特斯拉的经典案例

weixin_34265814的博客 383

es6中的MapSet结构

Set Map 结构也原生具有 Iterator 接口,可以直接使用for...of循环 Map Map是一组键值对的结构,具有极快的查找速度 与Map有关的方法的使用 var m = new Map(); // 空Map m.set('Adam', 67); // 添加新的key-value m.set('Bob', 59); //遍历一下 for (let pair of map) { console.log(pair); }//输出 //[''Adam',67] //['Bob',59]

sunchanglan151的博客 208

【JS】MapSet

ObjectSymbolArray以下四个查找键名时使用比较(类似于严格相等,但识别NaN)MapSetWeakSetWeakMap

qq_41298192的博客 199

es6中的Set 实现并集(Union)、交集(Intersect)差集(Difference)

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。数组的mapfilter方法也可以间接用于 Set 了。因此使用 Set 可以很容易地实现并集(Union)、交集(Intersect)差集(Difference)。 let a = new Set(["北京", "上海", "深圳"]); let b...

qq_36711388的博客 1499

集合全解析:轻松驾驭Java数据结构

本文通俗讲解Java集合框架,分为概念解析使用示例两大部分。首先将集合形象比喻为"可动态修改长度的数组",通过形图展示Java集合的两大类型:Collection(存储对象集合)Map(存储键值对)。作者以储物柜为例说明Map的键唯一特性,用箱子比喻Collection可存放复对象。第二部分通过代码演示List接口下的ArrayListLinkedList常用操作,包括添加、获取、修改、删除元素以及遍历等基础用法。全文采用生活化类比实际代码示例相结合的方式,旨在帮助初学者轻松

码力斜杠哥 629

List、Set、数组之间的转换

★ 数组转Collection 使用Apache Jakarta Commons Collections: import org.apach

宁静的森林(liuyeb) 790
上一篇: 轻松掌握泛型
下一篇: 轻松掌握内部类
Lockey-s
博客等级 码龄6年 2101粉丝 103原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lockey-s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值