使用集合对值进行排序

2024-03-01

使用集合进行排序很漂亮,对我来说比使用比较器要好得多,因为我有多个相同的值,并且我希望它们不要被扔进垃圾桶。但 Collections 有它自己的问题,它似乎认为 2+ 组的重复数量小于其实际较小的对应部分

示例有这些键和值(“katy 1”,“mark 9”,“john 2”,“alice 11”,“josiah 22”,“chris 44”),并对它们进行排序如下

爱丽丝 11 凯蒂 1 约翰 2 约西亚书 22 克里斯 44 标记9

而不是正确的顺序 凯蒂 1 约翰 2 标记9 爱丽丝 11 约西亚书 22 标记44

我怎样才能解决这个问题?


由于您传递的是字符串,因此集合无法告诉您希望如何解释这些字符串(即按字符串中存在的数字排序)。你必须更明确。

基本上你有两个选择:

Option 1:新建一个数据类型,封装一个名字和一个数字,实现按数字比较:

public class Person implements Comparable<Person> {

     private String name;
     private int number;

     public Person(String name, int number) {
         this.name = name;
         this.number = number;
     }

     public int compareTo(Person p) {
         return this.number.compareTo(p.number);
     }
}

Then:

 List<Person> persons = new ArrayList<Person>();
 persons.add(new Person("alice", 11));
 persons.add(new Person("katy", 1));
 // etc.
 Collections.sort(persons);

Option 2:将字符串转成键值对,放入a中TreeMap,它自动保持按键排序的值:

 TreeMap<Integer, String> map = new TreeMap<Integer, String>();
 map.put(11, "alice");
 map.put(1, "katy");
 // etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用集合对值进行排序 的相关文章

  • Selenium:将 Internet Explorer 中的文件下载到指定文件夹,无需直接链接,无需 Windows 窗体,无需 AutoIt 或 Robot

    我经常遇到一个问题 如何在 IE 中下载文件 与 Firefox 的 Chrome 不同 您不能只指定所需的文件夹 所有文件都会下载到该文件夹 您还需要与本机 Windows 表单等进行交互 有多种选项 例如使用 AutoIt 使用键盘命令
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • 如何准确判断 double 是否为整数? [复制]

    这个问题在这里已经有答案了 具体来说 在 Java 中 我如何确定double是一个整数 为了澄清 我想知道如何确定 double 实际上不包含任何分数或小数 我主要关心的是浮点数的性质 我想到的方法 以及我通过谷歌找到的方法 基本上遵循以
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 未注入带有 JPA2 的 Apache Ignite 2.7 IgniteRepository

    使用在 Web 上建立的 guildes 我使用 Spring Data JPA 2 应用程序制作了简单的 Spring Boot 2 仅在 2 7 版本中才向 Apache Ignite 添加了 Spring Boot JPA 2 支持
  • 如何避免Eclipse在将类名放在注释中时导入类,以便checkstyle稍后不会抱怨?

    有时我将类名放在方法或类的注释中只是为了引用 但是 Eclipse 会自动执行导入并在文件中留下导入语句 这会导致稍后出现 未使用的导入 检查样式错误 当我在注释中输入类名时 是否可以更改一些配置以避免 Eclipse 自动导入 人们不同意
  • Java 中如何验证字符串的格式是否正确

    我目前正在用 Java 编写一个验证方法来检查字符串是否是要更改为日期的几种不同格式之一 我希望它接受的格式如下 MM DD YY M DD YY MM D YY 和 M D YY 我正在测试第一种格式 每次它都告诉我它无效 即使我输入了有
  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • 避免 @Secured 注释的重复值

    我正在尝试使用以下方法来保护我的服务方法 Secured如下 public interface IUserService Secured ROLE ROLE1 ROLE ROLE2 ResponseEntity saveUser Creat
  • 使用 Guava Ordering 对对象列表进行多条件排序

    我有一个类无法实现可比较 但需要根据 2 个字段进行排序 我怎样才能用番石榴实现这一目标 假设班级是 class X String stringValue java util Date dateValue 我有一个清单 List
  • Java HashSet 是线程安全的只读吗?

    如果我通过 Collections unmodifyingSet 运行 HashSet 实例后 它是线程安全的吗 我问这个是因为 Set 文档声明它不是 但我只是执行读取操作 来自 Javadoc 请注意 此实现不是同步的 如果多个线程同时
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

    文件夹结构 app main java jni Android mk Application mk hello jni c res 在构建 gradle apply plugin com android application androi
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • com.sun.xml.ws.message.saaj.SAAJHeader 无法转换为 com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader

    我正在尝试访问第三方 Web 服务 该服务要求我创建一个传递时间信息 用户名和密码的安全标头 我在网上搜索了可行的示例 并尝试了多种方法 我正在尝试使用 Java 6 中内置的内容来做到这一点 我不确定我做错了什么 从 WSDL 生成 We
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个

随机推荐

  • 正则表达式可选组

    我正在使用这个正则表达式 a z a z d a z a z d d 13 匹配这样的字符串 SH 6208069141055 BC000388 20110412101855 分为 4 组 SH 6208069141055 BC000388
  • 如何查看 gstreamer 调试输出?

    如何查看 GST CAT INFO GST DEBUG 等函数的输出 我是否需要自己使用调试级别设置来编译 gstreamer 还是可以在应用程序级别完成 可以使用 GST DEBUG 环境变量在 stderr 中打印调试消息 如果 gst
  • .NET:打开嵌入资源文件中的文件

    如何打开嵌入资源文件中的文件 例如硬盘上的文件 具有绝对路径 假设您有test xml文件嵌入到程序集中 你可以使用获取清单资源流 http msdn microsoft com en us library system reflectio
  • 如何在 OpenAPI (Swagger) 中定义枚举?

    有谁知道如何定义可能enumOpenAPI 2 0 定义中的值以便它们显示在 Swagger UI 的 模型 选项卡中 示例在这里 https petstore swagger io pet addPet有一个枚举选项status财产 如何
  • 阻止应用程序[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要制作一个应用程序来阻止手机上的
  • 我可以用 Python 编写屏幕截图吗

    是否有任何库可用于在 Python 中编写屏幕截图 可以做成跨平台的吗 可以捕捉到视频吗 如果可以实时进行吗 或者说可以直接 生成Flash电影 屏幕捕获可以通过以下方式完成PIL 得益于 ImageGrab 模块 http www pyt
  • Firebase 函数 - https onRequest“HTTP 错误:400,请求有错误”

    我的 firebase 功能遇到一些重大问题 我正在尝试创建一个https请求以便我可以将数据发送到 Firebase 我有一个超级简单的代码只是为了测试 它会导致错误 这是我的代码 这段代码应该没有问题 exports fetchPost
  • Symfony 表单,错误冒泡

    我遇到了表单错误冒泡的问题 我的表单中的一个字段定义如下 formBuilder gt add title text required gt true error bubbling gt false 我想向该字段添加一个这样的验证器 Ass
  • 如何在 Windows 10 预览版中安装应用程序请求路由 ARR 3.0?

    当我尝试安装应用程序请求路由时 出现错误 安装 Microsoft 应用程序请求路由 3 0 需要 IIS 版本 7 0 或更高版本 Windows 10有IIS 10 0 所以应该是可以的 但我猜微软还没有修复版本检查 有没有可用的解决方
  • 使用 Python BeautifulSoup 单击链接

    所以我是 Python 新手 我来自 PHP JavaScript 背景 但我只是想编写一个快速脚本来抓取网站和所有子页面以查找所有内容a标签有href属性 数一下有多少个 然后单击链接 我可以计算所有链接 但我不知道如何 单击 链接然后返
  • 识别python中的日期格式

    如何获取 python 中给定日期输入的日期格式 笔记 输入是由用户给出的 不是预定义的格式 他们可能会 给出任何类型的输入格式 下面的示例适用于 dd mm yyyy 格式 但这不在 我的情况 日期格式未预定义 datetime date
  • EditText 提示文本和图标

    我正在尝试创建一个带有提示的 EditText 作为图标和文本 但是提示文本位于中心 但我希望提示文本左对齐 以便提示图标和提示文本之间应该只有制表符空格 间隙 这是我尝试过的
  • Android:弃用 startManagingCursor 的原因是什么?

    弃用 startManagingCursor 的原因是什么 我的简单应用程序有一个表视图 其中包含数据库中的数据列表 所以 我现在在 onCreate 中拥有的内容 final Cursor cursor getDataFromDB sta
  • 使用密钥来同步对代码块的访问

    通常我会锁定如下所示的关键部分 public class Cache private Object lockObject new Object public Object getFromCache String key synchroniz
  • 发布后到看到我的第一个 Android 应用程序上市需要多长时间

    我已经在市场上发布了一个应用程序 检查了设备列表 国家 地区列出了一切正常 但仍然无法通过在市场中搜索看到我的应用程序 想知道在市场上被搜索到需要时间吗 比如 3 或 7 天 小时 Thanks 这将需要几个小时 具体多长时间取决于服务器负
  • 使用 GSON 创建 JSON 字符串

    我正在上一堂像下面这样的课 public class Student public int id public String name public int age 现在我想创建新的学生 while create new student S
  • Kotlin 协程 GlobalScope.launch 与 runBlocking

    这两种方法有什么区别吗 runBlocking launch coroutineDispatcher job GlobalScope launch coroutineDispatcher job runBlocking运行新的协程并中断地阻
  • pyenv: pip: 未找到命令

    我正在尝试让 Python 2 7 在 OSX El Capitan 上与 pyenv 和 virtualenv 很好地配合 我已经安装了pyenv使用 Homebrew 然后使用 Python 2 7 11pyenv install 2
  • Textblock 中的标签自动换行不起作用

    我有一个包含相当多对象的 WPF 页面 在所有这些项目的底部 我有一个标签 需要在内容中进行文字环绕 答案很简单 通过使用 Textblock 这应该是小菜一碟 然而 即使我使用了这些项目 我仍然无法让文本换行 所以我假设其他对象中必须有其
  • 使用集合对值进行排序

    使用集合进行排序很漂亮 对我来说比使用比较器要好得多 因为我有多个相同的值 并且我希望它们不要被扔进垃圾桶 但 Collections 有它自己的问题 它似乎认为 2 组的重复数量小于其实际较小的对应部分 示例有这些键和值 katy 1 m