NavigableMap与NavigableSet

在 STM32CubeIDE 中针对 STM32F407 移植 ThreadX 在 STM32CubeIDE 中针对 STM32F407 移植 ThreadX,不依赖盗版破解的Keil MDK、IAR等软件。 阅读详情

可导航的Map和集合 NavigableMap and NavigableSet

Java集合框架(Java Collections Framework)加入了一个新的NavigableMap和NavigableSet接口。分别的扩展了SortedMap和SortedSet接口,本质上添加了搜索选项到接口。

NavigableMap接口

对于NavigableMap,有3个方法的集合。其中一个方法集合用于获取子Map,另一个集合用于获取Map Entity,最后一个用于设置Map键关联的工作。

在 第一个集合中存在3个方法。首先,navigableHeadMap(toKey)返回一个包含所有的键的NavigableMap,但是不包括 toKey,有一个返回带有所有键的NavigableMap的方法navigableTailMap(fromKey),从fromKey开始的,一直 到最后一个键的内容。最后,是一个naviagbleSubMap(fromKey,toKey)方法,返回一NavigableMap,从 fromKey开始,结束于toKey(这里是一个半开半闭区间[startKey,endKey))。感官上,这些方法与SortedMap的 headMap()、tailMap()和subMap()方法相同,但是返回不一样的类型,而不是上面提到的NavigableMap。

这里的第二个方法的集合是和Map的键有关的。对于SortedMap,你有firstKey()和lastKey()来获取某个Map的边界键值。NavigableMap有一些获取键的其他方法:

  • ceilingKey(key):用来获取大于或者等于给定的key的第一个键,如果没有的话就返回null。
  • floorKey(key):用来获取小于或者等于给定的key的第一个键,如果没有的话就返回null。
  • higherKey(key):用来获取大于给定的key的第一个键,如果没有的话就返回null。
  • lowerKey(key):用来获取小于给定的key的第一个键,如果没有的话就返回null。

第三个方法的集合可能是最有用的。当需要使用到SortedMap或者Map实例的时候,一般来说,你将获得键和获得对应的值。最后的方法的集合一般都是返回Map。实体实例取代了键。因此,你不必要去进行第二次查找操作。所以,这里有6个方法来操控第二个集合:

  • ceilingEntry(key):用于获取大于或等于给定key的第一个实体,如果没有则返回null。
  • firstEntry():用于获取Map的第一个实体,如果没有则返回null。
  • floorEntry(key):用于获取小于或等于给定的第一个实体key,如果没有则返回null。
  • higherEntry():用于获取大于给定的key的第一个实体,如果没有则返回null。
  • lastEntry():用于获取Map最后一个实体,如果没有则返回null。
  • lowerEntry(key):用于获取小于给定key的第一个实体,如果没有则返回null。

这里有两个单步从Map获取和删除实体的方法。提供了一个简单的不用使用迭代器而遍历所有Map元素的方法。下面是具体的介绍:

  • Map.Entry<K,V> pollFirstEntry():获取Map第一个键的实体并且从Map中移除该实体,如果Map为空则返回null。
  • Map.Entry<K,V> pollLastEntry():获取Map最后一个键的实体并且从Map移除该实体,如果Map为空则返回null。

另外还有两个值得起到的NavigableMap方法:descendingKeySet()和descendingEntrySet()。keySet()和entrySet()返回的是升序的键的集合,而新的NavigableMap方法是以降序进行工作的。

在Java 6中,这里有两个NavigableMap接口的实现。旧的TreeMap被从NavigableMap中继承而不是原来的SortedMap。另外,一 个该接口的并发的版本现在可以在ConcurrentSkipListMap类中找到。可能你并不熟悉skiplist,它们是一种排序过的链接,使用了 并行链表提高了搜索的速度。但TreeMap的结构是平衡的,并且粗略的从链表中寻找一个键,ConcurrentSkipListMap一直都是从最前 面开始,但是由于副skip list的作用,搜索的效果很接近于二分查找。

下面是一个具体例子,仅供参考:

import java.util.NavigableMap;
import java.util.TreeMap;

public static void main(String[] args) {
NavigableMap<String, Integer> nav = new TreeMap<String, Integer>();
nav.put("aaa", 111);
nav.put("bbb", 222);
nav.put("eee", 333);
nav.put("ccc", 555);
nav.put("ddd", 444);
System.out.printf("Whole list:%s%n", nav);

System.out.printf("First key: %s/tFirst entry: %s%n",nav.firstKey(), nav.firstEntry());

System.out.printf("Last key: %s/tLast entry: %s%n",nav.lastKey(), nav.lastEntry());

System.out.printf("Key floor before bbb: %s%n",nav.floorKey("bbb"));

System.out.printf("Key lower before bbb: %s%n", nav.lowerKey("bbb"));

System.out.printf("Key ceiling after ccc: %s%n",nav.ceilingKey("ccc"));

System.out.printf("Key higher after ccc: %s%n",nav.higherKey("ccc"));
}

输出结果:

Whole list:{aaa=111, bbb=222, ccc=555, ddd=444, eee=333}

First key: aaa    First entry: aaa=111

Last key: eee    Last entry: eee=333

Key floor before:  bbb: bbb

Key lower before:  bbb: aaa

Key ceiling after:  ccc: ccc

Key higher after:  ccc: ddd

NavigableSet接口

NavigableSet 工作类似于NavigableMap,但是没有键值对。在NavigableMap中的3组方法,这里有其中的两组。你可以可以获取一个可导航的子集,带 有navigableHeadSet(toElement), navigableSubSet(fromElement, toElement), 和 navigableTailSet(E fromElement)方法。或者你可以获得特定的元素,通过ceiling(element), floor(element), higher(element), 和lower(element)方法。你也可以获取或删除元素,通过pollFirst()和pollLast()方法,升序的迭代 descendingIterator()补充了iterator()。

在表面之下,CouncurrentSkipListSet使用ConcurrentSkipListSet来完成所有的工作。

 

化工设计软件:PDMS二次开发_(7).数据导入与导出技术 在某些复杂场景下,PDMS提供的标准API接口可能无法满足需求。此时,可以通过自定义API接口来实现特定的数据导入与导出功能。自定义设备导入API接口可以处理更复杂的设备数据格式。# 导入必要的库import pdms_api # 假设有一个PDMS API库# 定义自定义设备数据# 自定义设备导入API接口# 调用自定义设备导入API接口# 输出导入成功的消息print("自定义设备数据导入成功")在PDMS二次开发中,数据的导入与导出是关键的技术环节。 阅读详情

相关推荐

ubuntu安装FSL

1.下载fslinstaller.py 官网下载地址:https://fsl.fmrib.ox.ac.uk/fsldownloads_registration 或者去我的百度网盘取: 链接:https://pan.baidu.com/s/1d5eHm48oamFdYdKm84nifw 提取码:6ff9 2.将base环境改成python2.0版本 本来想在服务器安装,服务器没有sudo权限,网上很多教程都装不了,于是就自己安装虚拟机再装了一个ubuntu,然后安装了python2环境,再开始装fsl,fsl

qq_36421001的博客 4098

SortedMap、NavigableMap、TreeMap介绍和使用

SortedMap接口:SortedMap是一个接口,继承自Map接口,它定义了对键值对按照键的自然顺序或自定义顺序进行排序的功能。SortedMap中的键值对是按照键的顺序排列的,因此可以根据键的顺序进行范围查找和遍历操作。SortedMap接口提供了一系列的导航方法和有序操作方法。 NavigableMap接口:NavigableMap是SortedMap接口的子接口,它在SortedMap的基础上增加了一些额外的导航方法,使得对有序键值对的操作更加方便和灵活。

好看的皮囊千篇一律,有趣的灵魂万里挑一。 3404

C# OpenCV机器视觉:红外体温检测

阿强长舒一口气,脸上露出了自信的笑容:“好了,万事俱备,只欠东风,接下来就看我的了!在这热图像里,不同的颜色代表着不同的温度区域,就好比一幅用温度绘制的抽象画,红色通常表示高温,蓝色则代表低温,通过解读这幅画,就能大致了解物体表面的温度分布情况。” 阿强兴奋得一拍大腿,“这不就像是找到了隐藏在黑暗中的线索,只要顺着这些红外线的踪迹,就能揪出体温异常的潜在风险,守护大家的健康啦。带着这份坚定的信念,阿强又投入到新的科技研发中,他相信,只要大家齐心协力,用科技点亮希望之光,就一定能迎来更加美好的明天。

xcwzj123的专栏 3150

NavigableMap

1. NavigableMap 继承自 SortedMap,所以它的元素是有序的。 2. 在 SortedMap 基础上,支持快速搜索符合条件的最近的元素。这里条件主要是指lower(>),floor(>=),ceiling(<),higher(>)。 3. 支持逆序访问。descendingKeySet /descendingMap。 4. 支持获取子集合...

呈凹的博客 3046

TMC步进电机驱动stealthChop

经过九九八十一难,芯片手册拜读了好多遍,找了好多资料,问了好多人使用TMC2660驱动步进电机终于成功了。最后的问题居然是硬件把管脚画错了,然后我又没有检查,哭。。。

那可真是太开心了的博客 4489

WandB本地部署踩坑指南:从Docker启动到License更新的完整流程(附常见错误解决方案)

本文详细介绍了Weights & Biases(WandB)机器学习实验管理平台的本地化部署全流程,涵盖从Docker环境搭建、许可证管理到常见错误排查的实战经验。针对企业级应用场景,文章还提供了性能优化、高可用架构设计及开源替代方案Trackio的评估与迁移策略,为构建安全、可控的内部实验追踪平台提供完整解决方案。

potato的博客 567

Java中的Map【三】NavigableMap接口

所使用的jdk版本为1.8版本,先看一下NavigableMap<K,V>在JDK中Map的UML类图中的位置: 2.1.3NavigableMap接口 接口NavigableMap<K,V> extends SortedMap<K,V>,是一个扩展的SortedMap,在继承SortedMap接口的基础之上,扩展了一些返...

灵颖桥人的博客 2579

STM32F407+LWIP实战:NETCONN接口TCP服务器避坑指南(附正点原子例程解析)

本文深入解析了基于STM32F407和LWIP协议栈构建高响应TCP服务器的实战要点。针对使用NETCONN接口时常见的连接不稳定、数据延迟及内存泄漏等问题,提供了从NETCONN运行模型、服务器实现、参数优化到内存管理的全方位避坑指南,并结合正点原子例程,给出了具体的调试技巧与解决方案。

weixin_29188043的博客 402

NavigableMap接口

NavigableMap接口第1部分 NavigableMap接口介绍第2部分 NavigableMap接口数据结构第3部分 NavigableMap接口源码解析(基于JDK-8u201) 第1部分 NavigableMap接口介绍 NavigableMap接口简介 1 2 NavigableMap接口常用API 修饰语和返回类型 方法 描述 Iterator<T> i...

彬 799

2、集中式MIMO雷达研究进展:正交波形设计与信号处理

集中式多输入多输出(Multiple Input Multiple Output,MIMO)雷达通常利用正交波形增加发射波形 自由度,采用数字阵列拓展空间收发自由度,使得雷达接收机的天线孔径获得明显扩展,最终带来空间分辨率、 测角精确度、杂波抑制能力等大幅度提升。但是,这些性能提升的前提是发射波形具有正交特性。事实上,在 实际应用中,在不牺牲时域/频域资源情况下,受限于时宽带宽积,无法获得完全正交的波形集合,从而限制了 MIMO雷达系统性能。本文对集中式MIMO雷达正交波形复用的技术原理进行了系统回顾,分别

qq_43416206的博客 2772

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box。

成长需要沉淀。 397

Java NavigableMap接口总结 有序Map接口SortedMap接口的扩展

NavigableMap接口源码重点 NavigableMap接口继承自SortedMap接口,提供有序Map接口的扩展,提供了更为细致的导航方法,SortedMap源码可以看我这篇文章 SortedMap SortedMap接口继承自Map接口,所以NavigableMap接口也可以说是一种Map接口 NavigableMap接口提供了四类方法分别是 根据给定键key查找集合Map中的键 根据给定键key查找集合Map中的键值对Entry 获取集合Map中的键最小或最大的键值对 有序Map集合处理方法

weixin_45754452的博客 710

射频微波电路设计【1.4】

AppCAD是一组射频设计工具和计算机应用说明,它使射频工程师能以更快和更容易的方式设计他们的产品。该软件的理 念是为工程师提供一个“个人设计助理”,即功能强大、快速和容易使用的辅助设计工具。该软件包括如下基本功能: ·各种传输线电气参数的分析与计算;·各种匹配电路的分析与计算;·各种有源和无源简单电路的分析与计算;·射频系统指标的计算:增益、噪声系数、三阶交调、信噪比、灵敏度等;·器件可靠性分析。

qq_43416206的博客 2318

Java集合之NavigableMap与NavigableSet接口

   author:lidx      本文接着上篇介绍SortedMap和SortedSet接口,介绍他们的扩展接口NavigableMap与NavigableSet接口, 提供了针对给定搜索目标返回最接近匹配项的导航方法。 SortedMap和SortedSet接口两个接口jdk1.2就已经提供,扩展的NavigableMap与NavigableSet接口jdk1.6才开始支持。 1....

lidongxiu0714 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

如何使用Java 6的NavigableSet和NavigableMap

您可以使用最新的Java 6的Collection API来导航集合和Map集合。 这些API提供了很大的灵活性,可以从集合中查找所需的结果。 1. NavigableMap示例 package com.example.collection; import java.util.NavigableMap; import java.util.TreeMap; public class N...

一名可爱的技术搬运工 228

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Core Java (二十四) SortedMap,NavigableMap,SortedSet,NavigableSet接口

SortedMap接口 根据比较器进行排序,是一个有序映射表。 ComparatorK> comparator() Returns the comparator used to order the keys in this map, or null if this map uses the natural ordering of its keys.

GinSmile的博客 3657

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java.util.NavigableSet和NavigableMap

java.util.NavigableSet和NavigableMap

xymyeah 4193

java 中具有导航(navigate)功能的接口(NavigableSet和NavigableMap)的使用说明和对比

java 中具有导航(navigate)功能的接口(NavigableSet和NavigableMap)的使用说明和对比

爱的叹息的专栏 8475

TreeSet、NavigableMap、NavigableSet源码

TreeSet是一个有序的Set集合。既然是有序,那么它是靠什么来维持顺序的呢,回忆一下TreeMap中是怎么比较两个key大小的,是通过一个比较器Comparator对不对,不过遗憾的是,今天仍然不会讲Comparator,但是需要明白的是TreeSet要实现信息也必须依靠于Comparator接口。 关于Set,在前面我们讲过一个HashSet,是不是想起了什么,Set和Map在java中是...

weixin_30254435的博客 198

Java 集合中获取数据的前驱和后继元素

在 Java 中,如果需要获取某个数据的下一个或上一个数据,可以使用实现了 NavigableSet 或 NavigableMap 接口的集合,如 TreeSet 和 TreeMap,或者其线程安全的版本 ConcurrentSkipListSet 和 ConcurrentSkipListMap。对于实现了 List 接口的集合,可以通过 ListIterator 来获取前后元素。选择合适的集合取决于数据的类型、集合的排序需求以及是否需要线程安全。

龙大的博客 732

scjp复习笔记(3)

Example 16: 在Java1.6中引入了许多新的接口,其中的两个是:java.util.NavigableSet和java.util.NavigableMap。 import java.util.*; public class Ferry {   public s

过往记忆大数据 5351
上一篇: Cygwin下Hadoop的安装与配置
下一篇: Cygwin下Hadoop的安装与配置详解
G_beginner
博客等级 码龄16年 45粉丝 34原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值