在Java中按键排序HashMap的最佳方法?

2023-12-13

这是我第一次必须订购HashMap在爪哇。我需要按键执行此操作,但在我的情况下,键是一个对象,因此我需要按特定字段进行排序。尝试自己解决这个问题,我考虑继续编写这个简单的代码:

private HashMap<SimpleDBField, String> sortTable(HashMap<SimpleDBField, String> row){

    LinkedHashMap<SimpleDBField, String> orderedRow = new LinkedHashMap<SimpleDBField, String>();

    for(int i = 1; i <= row.size(); i ++){
        Iterator iterator = row.entrySet().iterator();

        while(iterator.hasNext()){
            Map.Entry<SimpleDBField, String> entry = (Map.Entry<SimpleDBField, String>) iterator.next();

            if(entry.getKey().getListPosition()==i){
                orderedRow.put(entry.getKey(), entry.getValue());
                break;
            }
        }
    }

    return orderedRow;
}

假设它有效并且我不关心性能,在真正使用它之前,我想知道下一个代码是否可以更好且最重要:为什么?

下面的例子来源在这里:如何在Java中按键和值对HashMap进行排序

public static <K extends Comparable,V extends Comparable> Map<K,V> sortByKeys(Map<K,V> map){

    List<K> keys = new LinkedList<K>(map.keySet());

    Collections.sort(keys);

    Map<K,V> sortedMap = new LinkedHashMap<K,V>();

    for(K key: keys){
        sortedMap.put(key, map.get(key));

    }

    return sortedMap;
}

如果两者都错了,我该怎么办?


最好的方法是使用TreeMap.

TreeMap<Foo, Bar> foo = new TreeMap(myHashMap);

如果您需要自定义比较器,可以使用new TreeMap(Comparator c)然后添加内容HashMap那里有foo.putAll(myMap);.

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

在Java中按键排序HashMap的最佳方法? 的相关文章

  • 如何获取枚举的子集

    大多数情况下 包含所有元素的枚举显示在用户界面的下拉列表中 我们只需要在用户界面中显示 5 个字段中的 2 个 通过某种方式利用可用于枚举的相同函数来获取此数据的更简单方法是什么 enum Color RED GREEN BLACK BLU
  • 使用 xuggle 将 mp3 转换为 wav 出现异常

    我正在尝试将 mp3 转换为 wav 代码在这里 String mp3 F work pic2talk38512 mp3 String wav F work pic2talk38512 wav TranscodeAudioAndVideo
  • JPA:如何将字符串持久保存到数据库字段中,输入 MYSQL Text

    需求是用户可以写文章 所以我选择typeText为了contentmysql数据库内的字段 我怎样才能转换Java String into MySQL Text 干得好Jim Tough Entity public class Articl
  • 隐藏类的 System.out.print 调用

    我正在使用 java 库 jar 文件 该文件的作者放入了一堆System out print and System out printlns 有没有办法隐藏特定对象的这些消息 编辑 看起来jar文件似乎正在创建一堆线程 并且每个线程都有它
  • Java byte[] 与 String 之间的转换

    为什么这个junit测试失败了 import org junit Assert import org junit Test import java io UnsupportedEncodingException public class T
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • 总结二维数组

    鉴于我当前的程序 我希望它在用户输入所有值后计算每列和每行的总和 我当前的代码似乎只是将数组的值加倍 这不是我想要做的 例如 如果用户输入具有以下值 1 2 3 2 3 4 3 4 5 的 3x3 矩阵 则看起来就像我在下面的程序中对其进行
  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • java.lang.UnsupportedOperationException:无法解析索引 13 处的属性:TypedValue{t=0x2/d=0x7f010046 a=-1}

    我在 android attrs xml 文件中添加了一个用于不同色调的属性 在 styles xml 文件中 我为这些属性指定了颜色 因此每种样式的它们都不同 Attrs xml
  • Java中的OR运算(BitSet.class)

    如何编写一个程序 该程序需要001010101110000100100 011100010001000011000 000000000010000000000100 作为输入 位 输出将是OR其中 3 个 OR 0 0 0 0 1 1 1
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Storm Spout 未收到 Ack

    我已经开始使用storm 所以我使用创建简单的拓扑本教程 https github com nathanmarz storm wiki Tutorial 当我运行我的拓扑时LocalCluster一切看起来都很好 我的问题是我没有得到元组的
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • 升级到 Tomcat 8 时出现 ClassNotFoundException

    我最近将 NetBeans IDE 从 v7 3 升级到 v8 突然我的应用程序在连接到数据库时在服务器启动时抛出异常 这两个版本的 IDE 之间的唯一区别是后者使用 Tomcat 8 异常日志 javax naming NamingExc
  • 使用泛型:类型参数 T 不能与 == 进行比较

    我正在操场上玩 Go Generics 尝试编写一些通用数组函数 https gotipplay golang org p vS7f Vxxy2j https gotipplay golang org p vS7f Vxxy2j packa
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个
  • 安卓框架?

    是否有任何框架比构建 Android 应用程序更容易 您会对其中一个感兴趣吗 很快就会有 我正在开发 DroidFu 一个 Android 共享库 它将为您提供 活动 和服务 中直接提供大量实用功能 例如生成列表和错误对话框 检查 Inte

随机推荐

  • Firefox 中的日期问题

    我想将页面中的日期解析为 JavascriptDate 所以我的页面中有这个 span 01 07 2012 01 04 PM span 我有 Javascript 代码可以解析迄今为止的这个值 var tagText this html
  • 如果在 JFrame 之外,Java 中的工具提示会闪烁吗?

    我正在 Java 中实现 ToolTip 以便让用户更轻松地使用该产品 尽管位于 JFrame 边界并最终位于 JFrame 外部的工具提示开始 闪烁 我已经尝试了很多东西 比如移动工具提示 使其应该位于 Jframe 内 控制绘画 使其最
  • R中绘图的最佳拟合曲线

    我在一个名为 ph 的图中有一个概率密度函数 它是在 stackoverflow 用户的帮助下从两个数据样本中得出的 以这种方式 few lt read table outcome dat head TRUE many lt read ta
  • D3.js 组件中的样式未显示在 Angular 2 中

    我正在使用 Angular 2 和 D3 js 我想显示一个红色矩形 仅当我将样式放入样式 css文件 查看这个笨蛋 当我将样式放入组件中时styles 这是行不通的 查看这个笨蛋 当我使用组件时如何让它工作styles Thanks UP
  • 向 Windows Phone 7 模拟器添加更多音乐?

    模拟器有大约 3 首歌曲 这不足以确保我正在开发的歌曲选择代码能够管理超过上述 3 首歌曲 所以只是想知道这是否可能 不幸的是 无法将歌曲添加到模拟器中 您必须使用真实设备来测试这一点
  • 如何用括号外的逗号分割字符串?

    我得到了这样格式的字符串 Wilbur Smith Billy son of John Eddie Murphy John Elvis Presley Jane Doe Jane Doe 所以基本上它是演员姓名列表 可选地在括号中加上他们的
  • 当源文件路径更改时,如何保持项目的数据库连接?

    我正在使用一个微软Access数据库在我的项目中 保存到bin文件夹 当文件路径更改时 我该怎么做才能确保与该数据库的连接 导入 System Data OleDb 公开课Form3 Dim con 作为新的 OleDb OleDbConn
  • 在所有库中导入应用程序兼容性依赖项

    我的应用程序中有 2 个模块 我想修改它们以使用 AppCompat 小部件 我必须用相同的方式扩展它们 问题是我不想向它们中的每一个添加 appcompat 依赖项 那么我怎么可能向这两个模块和我的应用程序添加依赖项 如果我添加 comp
  • 如何防止点击标签时页面刷新?

    我需要将一个参数传递到 URL 中 同时阻止页面在单击任何一个时重新加载 a 带有空白的标签href属性 a href 有没有办法用 JS jQuery 来做到这一点 我已经有了这个 jQuery list group item a cli
  • SQL 计数和组

    我有一个与此类似的 MySQL db 表 id date class more info one more info two etc 1 2017 05 03 1 2 2017 05 03 3 3 2017 05 11 1 4 2017 0
  • 在客户端验证行比使用整个主键的二级索引更好?

    在 cassandra 中 众所周知 应该非常谨慎地使用二级索引 例如 如果我有一张桌子 User username usertype email etc 这里的用户名是分区键 现在我想支持当且仅当 usertype 是特定值 X 时返回特
  • 接收方未注册异常错误?

    在我的开发者控制台中 人们不断报告一个错误 我无法在我拥有的任何手机上重现该错误 一个人留言说 当他们尝试打开我的电池服务的设置屏幕时 他收到了消息 正如您从错误中看到的 它表明接收器未注册 java lang RuntimeExcepti
  • Facebook API:所有朋友共享的所有链接?

    访问所有用户 Facebook 好友共享的链接的最实用方法是什么 我希望抓取由经过身份验证的用户的朋友共享的少数域的所有链接 有没有办法询问 域 X 的所有链接 所有链接 我将过滤域 X 或者我是否需要获取每个朋友并解析每个单独的提要 我假
  • T-SQL 读取带有命名空间的 xml 文件

    我尝试读取 sql server 中的 xml 文件 DECLARE XMLToParse XML Load the XML data in to a variable to work with This would typically b
  • TypeScript 2:非类型化 npm 模块的自定义类型

    尝试后发布的建议其他地方 我发现自己无法运行使用非类型化 NPM 模块的打字稿项目 下面是一个最小的示例和我尝试的步骤 对于这个最小的例子 我们假设lodash没有现有的类型定义 因此 我们将忽略该包 types lodash并尝试手动添加
  • 如何更改powershell控制台中的光标位置

    我目前将当前的 CursorPosition 分配给 Powershell 中的一个变量 以便在脚本中执行倒计时时可以覆盖相同的空间 如下所示 errorPos host UI RawUI CursorPosition for i 5 i
  • 在 Core Data 应用程序中更新 NSTableView 的正确方法

    我有一个带有 NSTableView 的核心数据项目 其中列绑定到 NSArrayController 反过来 控制器的内容绑定到 AppDelegate 的主要托管对象上下文 我对 NSTextFieldCell 进行了子类化 以提供更定
  • 访问和操作环境对象中的数组项

    我有一个EnvironmentObject我用来生成一个列表 class ActivityViewModel ObservableObject Published var Activities Activity init self Acti
  • Tableview的Plist搜索

    I have Plist它已填充在带有扩展部分的表格视图上 现在我想搜索表格 下面的图像中 您可以看到当我搜索任何内容时发生的情况 只是因为我正在搜索它 但需要对 cellforrowatindexpath 进行一些更改以获取搜索结果 请检
  • 在Java中按键排序HashMap的最佳方法?

    这是我第一次必须订购HashMap在爪哇 我需要按键执行此操作 但在我的情况下 键是一个对象 因此我需要按特定字段进行排序 尝试自己解决这个问题 我考虑继续编写这个简单的代码 private HashMap