如何在一个类中创建 2 个可比较的方法?

2023-12-29

我有一个类,我已经按一个属性对其进行了排序。 现在我需要做另一件事,我需要创建另一种方法来对数据进行排序。 我该怎么做呢,所以我可以选择两种方法。 我知道的唯一命令是 Collections.sort ,它将从我想要比较其数据的类中获取方法compareTo。

有可能吗?


您需要做的是实施自定义Comparator http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html。然后使用:

Collections.sort(yourList, new CustomComparator<YourClass>());

具体来说,您可以编写:(这将创建一个实现Comparator.)

Collections.sort(yourList, new Comparator<YourClass>(){
    public int compare(YourClass one, YourClass two) {
        // compare using whichever properties of ListType you need
    }
});

如果您愿意,您可以将它们构建到您的班级中:

class YourClass {

    static Comparator<YourClass> getAttribute1Comparator() {
        return new Comparator<YourClass>() {
            // compare using attribute 1
        };
    }

    static Comparator<YourClass> getAttribute2Comparator() {
        return new Comparator<YourClass>() {
            // compare using attribute 2
        };
    }
}

它可以像这样使用:

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

如何在一个类中创建 2 个可比较的方法? 的相关文章

  • 我是否需要安装 SQLite 才能使 SQLiteJDBC 正常工作?

    我想我只是没有 明白 如果我的计算机上尚未安装 SQLite 并且我想编写一个使用嵌入式数据库的 Java 应用程序 并且我将 SQLiteJDBC JAR 下载 导入到我的项目中 那么这就是我所需要的吗 或者 我是否需要先安装 SQLit
  • java中监视目录变化

    我正在使用 WatchService 来监视目录中的更改 特别是目录中新文件的创建 下面是我的代码 package watcher import java nio file import static java nio file Stand
  • Java:扩展类并实现具有相同方法的接口

    可能无法完成以下操作 我收到编译错误 继承的方法 A doSomthing int 无法隐藏 B 中的公共抽象方法 public class A int doSomthing int x return x public interface
  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • java.lang.ClassNotFoundException:javax.mail.MessagingException

    我想使用 eclipse 将电子邮件从我的 gmail 帐户发送到另一个邮件帐户 我使用 apache tomcat 7 0 34 作为我的 Web 服务器 并使用端口 8080 作为 apache 服务器 HTTP 1 1 并使用 JRE
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • 什么是抽象类? [复制]

    这个问题在这里已经有答案了 当我了解抽象类时 我说 WT H 问题 创建一个无法实例化的类有什么意义呢 为什么有人想要这样的课程 什么情况下需要抽象类 如果你明白我的意思 最常见的是用作基类或接口 某些语言有单独的interface构建 有
  • 如何调试“com.android.okhttp”

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • 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 项目 每当我运行它并将其打开到我得到的服务器地址时 Unable to determine host name java net UnknownHostException Caused by java net
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • 抛出 Java 异常时是否会生成堆栈跟踪?

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

随机推荐

  • 变量未定义编译器错误

    我是 Excel 的长期狂热用户 但刚刚开始学习 VBA 我正在使用以下代码 但当我尝试运行时出现错误Sub test 编译错误 变量未定义 你能帮我找出问题所在吗 Option Explicit Function toFarenheit
  • Heroku 上的 pg_largeobject 访问

    我正在尝试清理 Heroku 上的 postgres 数据库 其中一些大型对象已经失去控制 我想删除不再使用的大型对象 在我的开发机器上 我可以执行以下操作 select distinct loid from pg largeobject
  • 在编译时确定整型的位数

    NOTE 我在以下位置添加了一个类似但大大简化的问题版本诸如 msg long 之类的函数与候选 msg int32 t 和 msg int64 t 的不明确重载 https stackoverflow com questions 1057
  • Bash 使用 subshel​​l 和 substring 进行错误替换

    一个人为的例子 给出 FOO foo bar baz 这有效 在 bash 中 BAR basename FOO result is BAR baz BAZ BAR 0 1 result is BAZ b 这不 BAZ basename F
  • ember data 1.0.x 双向时不保存 hasMany 关系

    hasMany 关系之一不发送回服务器 您应该如何建模双向关系 以下是相关对象 Encompass Selection DS Model extend text DS attr string submission DS belongsTo
  • 如何将所选项目位置更改为 Recyclerview 中的顶部?

    I have recyclerview因为我想在选择项目后将项目的位置动态更改为顶部recyclerview 请建议解决上述问题的最佳方法 您需要将所选项目与列表中的顶部项目交换 然后通知您的适配器位置更改 示例代码如下所示 Collect
  • 无法使用 jQuery 从外部文件加载 xml

    我正在尝试使用以下代码加载外部 xml 但它不起作用 document load data xml function response status xhr console log xhr status xhr statusText 我两个
  • JSTL 迭代对象列表

    我在 jsp 中获取对象的列表 myList 我得到的对象属于例如 MyClass 我想通过 JSTL 迭代这个列表 JSP代码如下
  • 通过 NAT 在端口 2000 上运行的 FTP 服务器无法在被动模式下工作

    我正在 Windows 上运行 FILE Zilla ftp 服务器 其中一台 LAN 电脑连接到我的路由器 我正在尝试使用路由器 WAN ip 从路由器外部的网络访问 FTP 服务器 广域网到局域网 通过添加端口转发规则 NAT 在路由器
  • Spring:对具有字段和构造函数注入的类进行单元测试

    我有以下课程设置 class Base Autowired private BaseService service No getters setters Component class Child extends Base private
  • 底部填充不适用于非 Chrome 浏览器中的溢出元素

    如果你在 Chrome 中看一下这个小提琴 http jsfiddle net up4Fa http jsfiddle net up4Fa 您将看到一个溢出元素 内部有 20px 的填充 一切都很好并且按预期工作 但是 如果您在 IE9 或
  • .net图像编辑器控件[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个允许编辑图像的 net 控件 需要以下功能 Crop Zoom Pen Line Bru
  • 通过 JNLP 的 Java Applet:System.Properties 未“设置”

    我已经有很多年没有在 Java 中工作了 这是我的借口 我正在尝试将 Java Swing UI 作为 Applet 启动 以前通过 Web Start 完成 我修改了 jnlp 文件以反映我所知道的小程序所需的更改 例如使用 applet
  • 如何在 Kotlin 多平台项目的共享模块中使用 @Parcelize 注解

    我正在开发一个 Kotlin 多平台应用程序 我想在我的模型类中使用 Parcelize 注释 但在 Kotlin Multiplatform 插件中 我使用的 kotlin 版本中的 Parcelize 注释位于 android exte
  • 通话期间禁用接近传感器

    我的手机掉了 看起来我的接近传感器不再可靠地工作 它返回Near每时每刻 问题是 显示屏在通话过程中关闭 我无法使用数字键盘输入密码或召开另一个通话 甚至无法断开通话 我在辅助功能设置中找到了电源按钮断开连接选项 并现在使用它 我尝试创建一
  • 命名路由器出口和延迟加载模块

    我对命名路由器出口和延迟加载模块有问题 我有 2 个路由器插座 第一个没有名称 第二个有名称mainapp 应用程序组件 html
  • 我有两个数组,如何找到匹配的元素并执行某些操作? (洛达什)

    var array1 Age 24 Name Test StudentID 101 Checked false Age 25 Name Test StudentID 102 Checked false var array2 ID 101 如
  • 反转字符串中单词的顺序

    我有这个string s1 My name is X Y Z 我想颠倒单词的顺序以便s1 Z Y X is name My 我可以使用额外的数组来做到这一点 我苦苦思索 但是否可以就地完成 不使用额外的数据结构 并且时间复杂度为 O n 反
  • MessageBox 在最大化 MDI 形式中失去焦点

    我有一个 MDI 应用程序 用 NET 2 0 编写 它允许用户打开多个子窗体 子窗体始终在 MDI 父窗体内最大化 当 MDI 父级最大化并且我尝试执行 MessageBox Show 时 MessageBox 不显示 如果我按 alt
  • 如何在一个类中创建 2 个可比较的方法?

    我有一个类 我已经按一个属性对其进行了排序 现在我需要做另一件事 我需要创建另一种方法来对数据进行排序 我该怎么做呢 所以我可以选择两种方法 我知道的唯一命令是 Collections sort 它将从我想要比较其数据的类中获取方法comp