确定 Java HashMap 中最低可用键的最快方法?

2024-01-11

想象一下这样的情况: 我有一个HashMap<Integer, String>,我在其中存储连接的客户端。这是HashMap,因为顺序并不重要,我需要速度。它看起来像这样:

{
    3: "John",
    528: "Bob",
    712: "Sue"
}

大多数客户端都断开连接,所以这就是为什么我有很大的差距。 如果我想添加一个新客户端,我需要一个密钥,显然需要使用_map.size()获取密钥是不正确的。

因此,目前我使用此函数来获取最低的可用密钥:

private int lowestAvailableKey(HashMap<?, ?> _map) {
    if (_map.isEmpty() == false) {
        for (int i = 0; i <= _map.size(); i++) {
            if (_map.containsKey(i) == false) {
                return i;
            }
        }
    }

    return 0;
}

在某些情况下,这真的很慢。 有没有更快或更专业的方法来获得最低的免费密钥HashMap?


任何理由使用HashMap?如果你用过TreeMap http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html相反,地图将自动按键排序。是的,您最终会得到 O(log n) 访问而不是 O(1),但这是最明显的方法。

当然,您可以始终保持HashMap and a TreeSet,如果确实需要,请确保同时添加条目和删除条目。这TreeSet只会充当地图的一组有序键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定 Java HashMap 中最低可用键的最快方法? 的相关文章

  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • Cassandra java驱动程序协议版本和连接限制不匹配

    我使用的java驱动程序版本 2 1 4卡桑德拉版本 dsc cassandra 2 1 10cql 的输出给出以下内容 cqlsh 5 0 1 Cassandra 2 1 10 CQL spec 3 2 1 Native protocol
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 我可以使用子接口重新编译公共 API 并保持二进制兼容性吗?

    我有一个公共 API 在多个项目中多次使用 public interface Process
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的

随机推荐

  • Push Segue 在 iOS 5 中不起作用

    我对 IOS 非常陌生 我正在使用情节提要功能来创建应用程序 这就是我想要的 我有两个视图控制器 一个 ViewController 和两个 ViewController 我在一个 ViewController 中有一个按钮 O 按住 ct
  • 迭代通过域模型上的 linq 查询返回的对象的属性和值

    我在关系数据库中有一个自定义实体 我已通过域模型将其映射到 CLR 因此 通过使用以下语句 我可以通过域模型上的 LINQ 查询将实体从数据库拉入内存 如下所示 var inspection from i in dbContext New
  • 在 swift 中将 JSON 对象解析为字符串数组

    我有以下 Json 响应 language en textAngle 0 orientation Up regions boundingBox 96 29 244 474 lines boundingBox 96 29 58 12 word
  • 使用字符串/分类特征(变量)进行线性回归分析?

    回归算法似乎正在研究以数字表示的特征 例如 该数据集不包含分类特征 变量 如何对这些数据进行回归并预测价格是非常清楚的 但现在我想对包含分类特征的数据进行回归分析 有5特征 District Condition Material Secur
  • -1 * int.MinValue == int.MinValue??这是一个错误吗?

    在 C 中我看到了 1 int MinValue int MinValue 这是一个错误吗 当我尝试实现搜索树时 它真的把我搞砸了 我最终使用了 int MinValue 1 这样我就可以正确地否定它 这不是一个错误 int MinValu
  • Java在C中的易失性?

    我知道使用volatile在爪哇 即 基于维基百科文章 http en wikipedia org wiki Volatile variable 对易失性对象的读取和写入存在全局顺序 多变的 这意味着每个访问易失性字段的线程 将在继续之前读
  • 如何使用 python/distutils 依赖系统命令?

    我正在寻找最优雅的方式来通知我的库的用户他们需要特定的 unix 命令来确保它能够工作 什么时候是我的库提出错误的最佳时间 安装 当我的应用程序调用命令时 在导入我的库时 both 还有你应该如何检测命令是否丢失 if not comman
  • 查看模板代码标签 - asp.net mvc - regd

    在 asp net MVC 视图引擎上下文中 和 之间有什么区别 在MVC2书中给出如下 代码块在视图模板呈现时执行代码 代码块执行其中包含的代码 然后将结果呈现到模板的输出流 什么时候使用第一个 什么时候使用第二个 这本书几乎是正确的 代
  • findViewById(R.id.content) 和 getRootView() 之间的区别[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions findViewById R id
  • log4j2配置中RollingFile和RollingRandomAccessFile有什么区别

    在我们当前的实现中 其中一台服务器具有为 RollingRandomAccessFile 和另一个 RollingFile 设置的 log4j2 配置 如果可能的话 我想知道两者之间的区别以及各自的优缺点 Thanks 主要区别在于性能 h
  • 如何将拉取请求合并到我的 github 项目的功能分支中?

    有人通过 fork 向我的 GitHub 项目提交了拉取请求 我不想直接合并到 master 中 而是更愿意将更改合并到功能分支中 以便我可以在将最终产品合并到 master 之前进行一些小的编辑 如果可能的话 我希望 GitHub 向提交
  • 'c:/wamp64/bin/php/php7.0.10/ext/php_oci8_12c.dll' - %1 不是有效的 win32 应用程序

    为了从 php 访问远程 Oracle 数据库 我必须激活扩展php oci8 12c 但是当我这样做时 它不会出现在phpinfo 另一方面 我在 php 日志中收到错误消息 13 Jan 2017 08 39 48 UTC PHP 警告
  • 更改 MS Access 元素的默认样式

    当我向表单添加任何元素 如文本框 标签等控件 时 它的默认样式为 字体 Calibri 详细 字体大小 11 前景色 文本 2 浅 40 怎么可能改变这一点 我需要 MS Sans Serif 8 黑色作为默认值 Thanks 在 Acce
  • 如何读取javascript变量中的文件内容?

    我有一个小脚本 用于在每 4 个字符之后分割 var foo 内的文本 它运行良好 但我的实际数据位于文本文件 a txt 中 如何将整个文件文本放入 var foo 中 并将分割输出写入另一个文本文件 var foo this is sa
  • 按下背面退出 Android 应用程序

    我正在构建一个 Android 应用程序 如何在按下返回键时退出 Android 应用程序 Android版本为2 3 3及以上 Android 应用程序会转到我不想要的先前活动 Try this public void onBackPre
  • 错误:“MSVCP90.dll:没有此类文件或目录”,即使安装了 Microsoft Visual C++ 2008 Redistributable Package

    我正在尝试通过执行从源代码构建一个包python setup py py2exe 这是 setup py 中的代码部分 我认为相关 if sys platform win32 For py2exe import matplotlib sys
  • 降低非焦点项目的不透明度

    我有一个显示在主屏幕上的项目列表 该列表可以垂直滚动 目前我有 5 个项目 但当用户接近最后一个项目时会添加项目 从而创建无限滚动 我想让所有项目淡出 但焦点所在的项目应该完全透明 如下所示 正如您所看到的 左侧和右侧的项目已褪色并且稍小
  • Neo4j:使用 Cypher 批量关联节点的最佳方法?

    当我运行一个尝试批量合并特定类型的所有节点的脚本时 我得到了一些奇怪的性能结果 当合并 2 个节点集合 42k 和 26k 时 性能良好且快速 但是当我合并 42 和 5 时 性能急剧下降 我正在对 ParentNode 进行批处理 因此
  • Delphi 中的 Windows 7 登录屏幕保护程序

    我在使用 Delphi 应用程序作为 Windows 7 登录屏幕保护程序 适用于 32 位和 64 位 Windows 时遇到问题 即使是空白应用程序 没有任何额外代码的新项目 也会引发错误 Delphi 7 应用程序抛出 无法读取内存
  • 确定 Java HashMap 中最低可用键的最快方法?

    想象一下这样的情况 我有一个HashMap