java中根据不同的数据成员对对象列表进行排序

2024-01-22


我有这门课:

public class Friend {

private String name;
private String location;
private String temp;
private String humidity;

public String getTemp() {
    return temp;
}

public void setTemp(String temp) {
    this.temp = temp;
}

public String getHumidity() {
    return humidity;
}

public void setHumidity(String humidity) {
    this.humidity = humidity;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}


public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}
}

我想根据用户输入的名称、位置、温度和湿度对列表进行排序。
EDIT:用户指定必须按哪个数据成员进行排序。
做到这一点最简单的方法是什么?
谢谢。


因为您想按四种不同的标准对它们进行排序,所以实现 Comparable 是没有意义的。在这种情况下,您可能会发现为每个排序依据参数创建不同的比较器。但是,您可以为最符合逻辑的排序依据字段(例如名称)实现 Comparable。否则,比较器就是最佳选择。

public class FriendNameComparator extends Comparator<Friend> {

    // assuming both are non-null for code simplicity; you may wish to change that
    public int compare(Friend f1, Friend f2) {
        return f1.getName().compareTo(f2.getName());
    }
}

public class FriendLocationComparator extends Comparator<Friend> {

    // assuming both are non-null for code simplicity; you may wish to change that
    public int compare(Friend f1, Friend f2) {
        return f1.getLocation().compareTo(f2.getLocation());
    }
}

// and so forth

然后,您可以使用 Collections 实用程序类的排序函数按给定的比较器进行排序。

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

java中根据不同的数据成员对对象列表进行排序 的相关文章

  • Thymeleaf 3 Spring 5 映射加载字符串而不是 HTML

    我正在尝试将 Spring 5 和 Thymeleaf 3 一起配置 我正在 Eclipse 上工作 我使用 全新安装 构建并使用 springboot run 运行应用程序 我已经设置了一个控制器和几个模板 但 Thymeleaf 似乎找
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • Jframe 内有 2 个 Jdialogs 的 setModal 问题

    当我设置第一个选项时 我遇到了问题JDialog模态 第二个非模态 这是我正在尝试实现的功能 单击 测试对话框 按钮 一个JDialog有名字自定义对话框 主要的将会打开 如果单击 是 选项自定义对话框主 其他JDialog named 自
  • java inputstream 打印控制台内容

    sock new Socket www google com 80 out new BufferedOutputStream sock getOutputStream in new BufferedInputStream sock getI
  • 将集合绑定到自定义控件属性

    我没有运气尝试将数据集合绑定到我的自定义控件的属性 我已经实现了该控件的字符串属性的机制 在此处提供了一些帮助 并期望集合类型同样简单 但是我无法让它再次工作 这是我的自定义控件视图
  • 在 Java 中如何找出哪个对象打开了文件?

    我需要找出答案哪个对象在我的 Java 应用程序中打开了一个文件 这是为了调试 因此欢迎使用工具或实用程序 如果发现哪个对象太具体了 这class也会很有帮助 这可能很棘手 您可以从使用分析器开始 例如VisualVM http visua
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 提高 PostgreSQL 1 亿数据左连接查询性能

    我在用Postgresql 9 2 version Windows 7 64 bit RAM 6GB 这是一个Java企业项目 我必须在我的页面中显示订单相关信息 有三个表通过左连接连接在一起 Tables TV HD 389772 行 T
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • PHP 的 mb_internal_encoding 实际上是做什么的?

    根据 PHP 网站 http www php net manual en function mb internal encoding php它这样做 coding 是用于 HTTP 输入的字符编码名称 字符编码转换 HTTP输出字符编码 转
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 更改特定字符串的颜色

    有谁知道如果将特定单词输入文本区域 我如何更改它的颜色 例如 如果用户输入 你好我的朋友 它会动态地将 你好 更改为绿色 在google上花了很多时间 找不到任何相关的东西 谢谢 textareas 的设计目的不是选择性着色
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp

随机推荐

  • 重定向到带有 auth 标头的 url

    我正在尝试重定向到受保护的资源 当我按下登录按钮时 它会发送到我未受保护的登录 api 并返回一个令牌 其他路由期望标头 授权 不记名令牌 类型的交易 但我不知道当我重定向到受保护资源时如何设置标头 console log success
  • TFS 2018 以编程方式创建代理池

    是否可以以编程方式 最好通过 PowerShell 在 TFS 2018 中创建代理池 我在 REST API 中找不到类似的东西 我不知道为什么它没有详细记录 但这对我来说对 VSTS 有效 token myPAT base64AuthI
  • 获取 UITextView 中滚动后可见文本的 NSRange

    我正在尝试将滚动文本的位置保存在UITextView这样我就可以在加载时返回到该位置ViewController再次 我有很长的字符串 所以我希望用户能够滚动到特定位置 然后稍后返回到该位置 我正在使用UITextView scrollRa
  • 有没有办法让 json.Unmarshal() 根据“type”属性选择结构类型?

    我有一些以下形式的 JSON type car color red hp 85 doors 4 type plane color blue engines 3 我有类型car and plane满足车辆接口 我希望能够写 var v veh
  • 如何在开始其他活动时保留 Tabhost

    我的 TabHost 有问题 我的 TabBarActivity 类流程为 公共类 TabBarActivity 扩展 TabActivity 实现 OnTabChangeListener non Javadoc see android a
  • IdentityServer - AD 用于身份验证,其余部分在 DB 中

    我已经设置了一个已启动并运行的基本 IdentityServer 我使用 Identity Manager 和 Identity Admin 将所有内容 用户 角色 声明 客户端 范围 保存在数据库中 下一步是将身份验证与 AD 集成 我的
  • Tensorflow 计算图像中的对象[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 机器学习新手 因此正在寻找如何入门的方向 最终目标是能够使用 Tensorflow 训练模型来计算图像中的对象数量 我最初的重点是训练
  • 使用 psql 时获取错误代码

    当我使用 psql exe 运行 SQL 脚本时 发生错误时没有收到错误代码 有什么方法可以获取 psql 错误代码吗 我尝试将 VERBOSITY 设置为 详细 如下所示 但没有用 set VERBOSITY verbose 我正在使用
  • SecurityTokenInvalidAudienceException:IDX10214:受众验证失败

    我正在使用 Identity 和 Sustainsys Saml2 用于 SAML 身份验证 开发 ASP NET Core 2 应用程序 我已在 Startup cs 文件中进行了必要的配置 现在 当我运行该项目并尝试使用 SAML2 登
  • 如何在 C# 中获取当前用户的 Active Directory 详细信息

    我正在开发一个使用 Windows 身份验证的 C 和 ASP Net 应用程序 即在 Web config 中
  • powershell远程安装msi失败

    我正在尝试使用 powershell 在远程服务器上安装 msi 文件 服务器 1 是我的构建服务器 服务器 2 是我的应用程序服务器 当构建服务器完成构建后 我想触发一个 powershell 脚本以将最新版本安装到我的应用程序服务器 我
  • 获取列表中的项目

    我有以下列表项 public List
  • 给定一个搜索词列表,我如何知道我的字符串包含哪些搜索词?

    有很多软件会采用搜索字符串并查找数据库中包含该字符串的所有文本 MySQL 的WHERE MATCH searchterm string column 谷歌等 但是有没有一个好的算法可以反其道而行之呢 假设我有一个搜索词列表 丰田普锐斯 丰
  • Rails 3.1 命名范围

    编写以下代码的Rails 3 1是什么 named scope min 2 items last 90 days include gt orders gt order items conditions gt orders created a
  • HEROKU 上的 CORS 问题

    我在 Heroku 上遇到 CORS 问题 这是我在服务器上的代码 import express from express import bodyParser from body parser import mongoose from mo
  • Laravel 中的模板

    我正在尝试让我的默认模板与 Laravel 一起使用 我来自 Codeigniter 和 Phil Sturgeon 的模板系统 因此我尝试以类似的方式进行操作 谁能帮助我解决我遗漏 做错的事情 谢谢 default blade php l
  • 正则表达式 - 匹配所有出现的情况?

    my matches result m INFO n n 所以在 Perl 中我想存储该正则表达式的所有匹配项 我希望每次发生时都将值存储在 INFO n 和 n 之间 但我只存储了最后一次出现的情况 我的正则表达式错误吗 Use the
  • 为什么使用 grep -q 退出代码 141?

    有人可以解释为什么我从下面得到退出代码 141 吗 usr bin bash set o pipefail zfs list grep tank echo a PIPESTATUS zfs list grep q tank echo b P
  • 在我的 Android 手机上,socket.io 似乎有延迟

    EDIT 2 我观察到使用相同的行为服务器发送的事件 SSE 参见示例here http cjihrig com blog server sent events in node js 当然 这是一种方式 然而 它在我的 Nexus 5 上似
  • java中根据不同的数据成员对对象列表进行排序

    我有这门课 public class Friend private String name private String location private String temp private String humidity public