实现Map并保持插入顺序的Java类?

2024-03-10

我正在java中寻找一个具有键值关联但不使用哈希的类。这是我目前正在做的事情:

  1. 将值添加到Hashtable.
  2. 获取一个迭代器Hashtable.entrySet().
  3. Iterate through all values and:
    1. Get a Map.Entry对于迭代器。
    2. 创建一个类型的对象Module(自定义类)基于值。
    3. 将类添加到 JPanel。
  4. 显示面板。

问题是我无法控制取回值的顺序,因此我无法按给定的顺序显示值(无需对顺序进行硬编码)。

我会用一个ArrayList or Vector为此,但稍后在代码中我需要抓住Module给定 Key 的对象,我不能用ArrayList or Vector.

有谁知道有一个免费/开源的 Java 类可以做到这一点,或者从 a 中获取值的方法Hashtable基于它们添加的时间?

Thanks!


我建议一个LinkedHashMap http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html or a TreeMap http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html. A LinkedHashMap保持按键插入的顺序,同时TreeMap通过a保持排序Comparator或自然的Comparable键的顺序。

由于它不必保持元素排序,LinkedHashMap大多数情况下应该更快;TreeMap has O(log n)性能为containsKey, get, put, and remove,根据 Javadocs,同时LinkedHashMap is O(1)对于每个。

如果您的 API 仅需要可预测的排序顺序,而不是特定的排序顺序,请考虑使用这两个类实现的接口,NavigableMap http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html or SortedMap http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html。这将使您不会将特定的实现泄漏到您的 API 中,并在之后随意切换到这些特定的类或完全不同的实现。

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

实现Map并保持插入顺序的Java类? 的相关文章

随机推荐

  • Netbeans IDE 项目窗口中的跟踪文件

    刚刚开始使用 NetBeans 8 0 2 想知道 IDE 是否具有与 Eclipse 或 Visual Studio 类似的功能 在项目资源管理器中跟踪当前文件 在处理大型项目时 打开大量文件 如果我想导航到项目窗口中的当前文件 这会变得
  • 可以在 Javascript 中同步检查 Firebase 3 身份验证状态吗?

    目前 我的应用程序正在利用授权状态更改回调来指示在我的应用程序中的授权部分和主页部分之间移动 注意 我没有使用 AngularFire 在 Firebase 3 中有firebase auth currentUser但是 如果 fireba
  • RESTful系统中一次请求多条记录

    我见过的有关 RESTful 架构的所有示例都处理单个记录 例如 一个 GET 请求mydomain com foo 53获取 foo 53 或 POST 到mydomain com foo创建一个新的 Foo 但如果有多条记录呢 能够通过
  • Nodemon 和/或使用 Node-React Web 应用程序进行热重载

    在使用 webpack 配置 Web 应用程序以创建最佳开发体验方面 我还很陌生 我参加了两门不同的 Node React 课程 一门我们使用 nodemon 来跟踪更改 另一门我们实现热重载 当涉及到这两种依赖关系时 是一个还是另一个呢
  • 在 C# 中使用 Marshal.StructureToPtr 将结构传递给 C++ API

    我在我的代码中使用用 C 编写的 API 用 C 编写 API 需要一个参数作为结构指针 该结构由 Int 和 Char 数组组成 例如 unsafe public struct ToBePassed Int32 Num1 Int32 Nu
  • 如何使用Python ping ip并仅获取Tk中的ms?

    我想制作一个小 tk 应用程序 连续 ping 一个 ip 并且只显示 MS 例如 10ms 我该怎么办 如果您想使用 Windowsping 您必须解析命令行的输出 这是非常具体的 但应该有效 import os while 1 ping
  • 转换 Java 函数式接口

    一如既往 我浏览 JDK 8 源代码并发现了非常有趣的代码 Override default void forEachRemaining Consumer
  • 手动创建 Git 分支

    如果我理解分叉 它在概念上涉及以下步骤 将源存储库镜像克隆到目标存储库 在目标存储库上设置 上游 远程 指向源存储库 其他一些东西 例如电子邮件订阅等 对于这个问题并不重要 它是这样的 Original lt upstream Forked
  • 使用 Elasticsearch 搜索 Mysql 表

    假设我有以下 费用 MySQL 表 id amount vendor tag 1 100 google foo 2 450 GitHub bar 3 22 GitLab fizz 4 75 AWS buzz 我正在构建一个 API 该 AP
  • 当我使用 is 运算符时,为什么 IL 代码中只有空检查?

    我想知道怎么样is operator实施于C 我写了一个简单的测试程序 没什么特别的 只是为了演示目的 class Base public void Display Console WriteLine Base class Derived
  • 在函数内部使用 php 命名空间

    尝试在我自己的函数中使用名称空间时出现解析错误 require var load php function go use test Class go ok return go echo go From 导入范围规则 http php net
  • Delphi 中 WideString 的 WrapText

    德尔福有一个WrapText http docwiki embarcadero com VCL en SysUtils WrapText功能 function WrapText const Line BreakStr string cons
  • 在“SELECT”标签中呈现“OPTION”的层次结构

    我的问题与 HTML 和 CSS 相关 我有一个层次结构类型的结构 我想在列表中显示 该层次结构包含国家 州和城市 共三层 我想在选择列表中显示列表 每个项目类型 国家 州 城市 必须可选 这些项目应缩进为 United States Ha
  • Chrome 中有时会跳过 CSS 过渡

    我想将鼠标悬停在图像上时使用旋转动画翻转图像 请参阅下面的代码 当鼠标悬停在图像上时 它会绕 x 轴旋转一秒钟 当鼠标离开图像时返回 动画在 Firefox 和 Safari 中按预期工作 然而 Chrome有时会跳过动画并立即翻转图像 我
  • 使用 pandas dataframes data python 创建堆叠直方图

    我正在尝试使用来自 2 个或更多不均匀的 pandas 数据帧的数据创建堆叠直方图 到目前为止 我可以让它们在彼此之上绘制图表 但不能堆叠 import pandas as pd import matplotlib pyplot as pl
  • 我什么时候应该在 Python 中使用类型检查(如果有的话)?

    我开始学习 Python 作为一名主要的 Java 开发人员 我遇到的最大问题是了解何时以及何时不使用类型检查 大多数人似乎都说 Python 代码不需要类型检查 但在很多情况下我认为这是必要的 例如 假设我需要使用方法参数来执行算术运算
  • jQuery 模态表单对话框回发问题

    我创建了一个jQuery用户界面 http en wikipedia org wiki JQuery UI模式形式 我希望该形式触发回发 但我很难让它工作 我知道有很多文章是基于使用 SimpleModal 插件的 我尝试过调整这些并覆盖
  • 在python中获取组合框的值

    我正在开发一个简单的程序 我需要从Combobox 当Combobox位于第一个创建的窗口中 但例如如果我有两个窗口并且Combobox在第二个中 我无法从中读取值 例如 from tkinter import from tkinter i
  • 带 Sinch VOIP 的 Pushkit 无法与 Pushkit 配合使用

    我正在尝试在我的 IOS 应用程序中使用 Sinch 实现应用程序到应用程序的呼叫 我已经使用 Sinch 在我的 iOS 应用程序中实现了 Pushkit 但是当应用程序处于后台时 推送通知不起作用 我有两个问题 我是否需要另一个 Web
  • 实现Map并保持插入顺序的Java类?

    我正在java中寻找一个具有键值关联但不使用哈希的类 这是我目前正在做的事情 将值添加到Hashtable 获取一个迭代器Hashtable entrySet Iterate through all values and Get a Map