使用compareTo和Collections.sort

2023-12-13

我有一个特许经营类别,其中包含所有者(特许经营所有者名称)、州(特许经营所在州的 2 个字符串)和销售额(当天的总销售额)

public class Franchise implements Comparable <Franchise>  {
final String owner;
final String state;
final double sales;

protected Franchise(String owner, String state, double sales ) {
    this.owner = owner;
    this.state = state;
    this.sales = sales;
}
public String toString() {
    String str = state + ", " + sales + ", " + owner;
    return str;
}
public String getState() {
    return state;
}
public double getSales() {
    return sales;
}
public int compareTo(Franchise that) {
    double thatSales = that.getSales();
    if (this.getState().compareTo(that.getState()) < 0)  
        return -1;
    else if (this.getSales() > thatSales)
        return -1;
    else if (this.getSales() < thatSales)
            return 1;
    else
        return 0;
}
}

比较基于状态升序和销售额降序

import java.util.ArrayList;
import java.util.Collections;

public class FranchiseTester {

public static void main(String[] args) {
    ArrayList<Franchise> franchises = new ArrayList<Franchise>();
    Franchise a = new Franchise("Andrew Luck", "IN", 1270.5);
    Franchise b = new Franchise("Ray Rice", "MD", 1210);
    Franchise c = new Franchise("Alfred Morris", "WA", 980.5);
    Franchise d = new Franchise("Roddy White", "GA", 670);
    Franchise e = new Franchise("Greg Olsen", "SC", 740);
    Franchise f = new Franchise("T.Y. Hilton", "IN", 950);
    Franchise g = new Franchise("Julio Jones", "GA", 560);

    franchises.add(a);
    franchises.add(b);
    franchises.add(c);
    franchises.add(d);
    franchises.add(e);
    franchises.add(f);
    franchises.add(g);

    Collections.sort(franchises);

    for(int i = 0; i < franchises.size(); i++) {   
        System.out.print(franchises.get(i) + "\n");
    } 
}

}

当我比较这些特许经营对象时Collections.sort他们比较正确,但是当我使用Collections.sort就像我在这里得到的输出是这样的:

GA,670.0,罗迪·怀特
GA,560.0,胡里奥·琼斯
IN,1270.5,安德鲁·勒克
IN,950.0,T.Y.希尔顿
MD,1210.0,雷·赖斯
SC,740.0,格雷格·奥尔森
西澳州,980.5,阿尔弗雷德·莫里斯

该州的比较仍然正确,但没有正确地按销售额进行比较(特定统计数据的较低销售额应该首先出现)

我认为 .sort 默认情况下比较字符串是状态仍然正确的原因,我的问题是如何实现它以基于销售额进行比较?


在你的问题陈述中你是这样说的“compareTo 基于状态升序和销售额降序”。基于此,您的结果是有效的。州按升序排列,每个州的销售额按降序排列。在下一个声明中你说(特定统计数据的销售额下降应该首先出现)。所以基本上你有两个相互冲突的要求。两者不能同时进行。

换句话说,您是否希望您的程序执行其他操作,例如两者都应升序或均降序或其他顺序。如果是,那么您必须相应地修改您的compareTo 方法。

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

使用compareTo和Collections.sort 的相关文章

  • JSF2.0 中的空白输入字段未设置为 NULL

    我有一个支持 bean 其中 fileld 为 Long Double Integer String 当我没有在输入字段中指定任何内容时 长整型 整数和双精度值将被视为零 而不是空 我正在使用 tomcat 来部署我的应用程序 有什么解决办
  • 在 Spark 中写入 JSON 时保留具有空值的键

    我正在尝试使用 Spark 编写 JSON 文件 有一些键有null作为价值 这些在中显示得很好DataSet 但是当我写入文件时 密钥会丢失 我如何确保它们被保留 写入文件的代码 ddp coalesce 20 write mode ov
  • 如何打印JTable中选定的行

    我尝试使用主 JTable 的选定行和相同的头和单元格渲染来创建临时 JTable 但是当我尝试打印它时 我只得到一个带有线边框的空矩形 我在如何打印 JTable 的特定行 列 https stackoverflow com questi
  • 将更改(永久)保存在数组列表中?

    那可能吗 例如 用户将新的项目 元素添加到数组列表 缓冲读取器进程 中 并且肯定会发生更改 我的问题是 即使用户多次更改数组列表 它也可能会永久存在 即使他们关闭程序并再次打开它 它也会一直存在 注意 不使用 txt 很抱歉问这样的问题 但
  • 如何知道内存中是否已经存在类的实例?

    如何知道内存中是否已经存在类的实例 我的问题是 如果存在类实例 则不想读取方法 这是我的代码 private void jButton java awt event ActionEvent evt PNLSpcMaster pnlSpc n
  • 图像在 3D 空间中绕 Y 轴旋转

    我有一个 BufferedImage 我想用 theta 角而不是仿射变换绕 Java 中的 Y 轴旋转图像 图片 旋转将如下图所示 矩形将是图像 我可以通过旋转图像的每个像素并绘制图像来做到这一点 因为我必须旋转很多图像 所以我认为这不是
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 按 ListProperty (NDB) 对查询进行排序

    如何按 ListProperty 对查询进行排序 该模型 class Chapter ndb Model title ndb StringProperty required True version ndb IntegerProperty
  • 竞争条件和 Clojure Atoms

    clojure atom 的文档指出 Changes to atoms are always free of race conditions 然而 竞争条件不仅是根据更改定义的 而且是在不同线程中并行逻辑操作的上下文中定义的 我想知道 保证
  • 如何在 SpringBoot v3.0.0 中使用嵌入式 MongoDB?

    我正在尝试连接嵌入式 mongodb 并使用 MongoDbSpringIntegrationTest 对其进行测试 问题是相同的代码在 2 7 7 中适用于 spring boot 但在 3 0 0 中不适用于 spring boot 问
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • 如何防止我的 servlet 被其他网站调用

    好的 我有一个像这样的简单的 servlet public class SimpleServlet extends HttpServlet public void doPost HttpServletRequest req HttpServ
  • 字符串 a == 字符串 b 的规则 [重复]

    这个问题在这里已经有答案了 我试图了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是什么 例如这个片段 public static void main String hi String s1 lol String s2 lol S
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • 根据另一个列表的内容对列表进行排序

    我有一个包含整数列表的列表和另一个包含同时包含整数和字符串的类的列表 我想做的是按字母顺序对列表进行排序 将第一个列表中存在的条目放在前面 这是我的代码和预期输出 using System using System Collections
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • 使用 ProcessBuilder 启动 CMD

    我尝试使用以下代码在 Windows 中启动 CMD 应用程序 但它无法按预期工作 来自不同网站的几个示例表明 cmd 作为 ProcessBuilder 构造中的参数应该有效 我需要做什么才能让我的 Java 应用程序在 Windows
  • 为什么找不到 getservletcontext?

    我正在尝试使用getServletContext getRealPath 但我不断收到此错误 cannot find symbol symbol method getServletContext location interface jav
  • Java 中有类似 .NET 的 NotImplementedException 的东西吗?

    有没有类似 NET 的东西NotImplementedException在Java中 康芒斯朗 http commons apache org proper commons lang javadocs api 2 6 org apache

随机推荐

  • 将数据帧转换为 numpy 数组,值以逗号分隔

    场景 我已将 csv 以 t 分隔 读入 Dataframe 现在需要采用 numpy 数组格式进行聚类 而无需更改类型 问题 到目前为止 根据尝试的参考文献 如下 我未能获得所需的输出 我尝试获取的两列值位于 int64 float64
  • 与“int ()”的间接级别不同 (C)

    这段代码给了我这个错误 我不明白 我什至无法运行该程序 您能帮我解决这个错误吗 如果您不明白代码中的任何内容 请说出来 error C2040 CancelarPedido ppedido ppedido 与 int 的间接级别不同 pri
  • 对象从函数中的命名空间中消失

    我正在编写一个包装器来按行组合任意数量的数据集 由于有些变量可能具有唯一的变量 因此我首先限制数据中的变量 我的功能是这样工作的 rcombine lt function List Vars List2 lt lapply List sub
  • Python 中的字符串匹配

    我在列表中存储了300K个字符串 每个字符串的长度在10到400之间 我想删除那些作为其他字符串的子字符串的字符串 长度较短的字符串有更高的概率是其他字符串的子字符串 目前 我首先根据长度对这 300K 字符串进行排序 然后使用以下方法 s
  • SSRS 2008 R2 Globals!RenderFormat 导出方法

    有 7 个用于导出 SSRS 2008 报告的内置选项 我想知道在选择导出选项时是否有更简单的方法在 SSRS 中编写以下代码 IIF Globals RenderFormat Name WORD OR Globals RenderForm
  • CMake 引用逃脱难题

    我似乎无法理解 CMake 的转义规则 鉴于 set X A B C add custom target works COMMAND DUMMY 0 X X env grep X COMMENT This works add custom
  • grid.mvc 在控制器中使用过滤结果

    我正在使用 grid mvc http gridmvc codeplex com 用于过滤和排序 有谁知道如何在动作控制器中处理过滤结果 我试图通过 FormCollection 传递隐藏字段 但由于分页 仅传递可见值 或者 mvc 中是否
  • jsfiddle 上的相同代码但无法在我的服务器上运行? [复制]

    这个问题在这里已经有答案了 我很困惑 我只是想测试一个jquery simpleselect 并让它在jquery上正常工作 但是当我将它上传到我的服务器时 完全不起作用 我发誓它的代码是相同的 但也许新的眼光会有所帮助 我在这里缺少什么
  • ClearCase 动态视图中两个版本之间的差异

    比如说 我在 ClearCase 中有两个不同的动态视图 我想知道是否有任何命令可以提供报告 x lines added y lines deleted z lines changed 两个版本之间 是的 您可以使用diffstat生成一个
  • MessageStore 支持 QueueChannel,带有 Spring Integration+ Java Config

    弹簧集成参考指南指的是使用 MessageStore 实现来为 QueueChannel 提供持久性 它被提到了很多次 但所有示例都使用 XML 配置 即
  • 如何减少Android Workmanager的时间?

    我一直在检查其他链接 stackoverflow 以减少工作管理器的时间段 但我发现了以下链接 如何减少WorkManager中Periodic WorkManager的时间 上面的链接说最短时间是 15 分钟 需要立即从移动设备向服务器发
  • 如何将 MS botframework 机器人连接到 Skype for Business

    我发布了一个使用机器人框架构建的机器人 但我不知道如何将其连接到内部公司网络上的 Skype for Business 有谁知道流程是什么吗 Ed 尚不支持 Skype for Business
  • 如何创建一个数据类实现 Spring Security 特定的 UserDetails

    我正在尝试迁移一些spring webfluxkotlin 的示例代码 目前我想转换我的Spring数据蒙戈科特林样本 有一个User 原始 Data Mongo 版本看起来 Data ToString Builder NoArgsCons
  • Docusign 嵌入式签名

    我们正在使用docusign让人们签署在我们网站上注册的同意书 有人向我指出了嵌入式签名 API 据我了解 我必须创建一个我已经完成的信封 我为此使用 Net 示例 通过 API 登录正常 但尝试从 API 获取 URL 时出现以下错误 E
  • 在哪里可以找到 execve() 的源代码?

    你能给我源代码吗execve 系统调用 exec家庭 我正在使用 Linux execve 调用 sys execve sys execve 又调用 do execve 这就是操作的位置 http git kernel org p linu
  • 获取表的列名,该列名始终为空

    我有一个有很多列的表 他们中的一些人总是NULL并且不包含任何值 有没有办法使用 SQL 查询列出这些列 而不是一一测试它们 我想避免 SELECT Col1 from MyTable where Col1 IS NOT NULL SELE
  • Azure Function (Python) w/存储上传触发器因大文件上传而失败

    Azure Function Python 由文件上传到 Azure 存储触发 该功能适用 于高达 120MB 的文件 我刚刚使用 2GB 文件进行负载测试 该函数产生了错误Stream was too long 此限制记录在哪里 我将如何
  • 从 Lambda 访问 Redshift - 避免 0.0.0.0/0 安全组

    我正在尝试从 Lambda 函数访问 Redshift 数据库 当我将 0 0 0 0 0 添加到 Redshift 界面中的安全组连接时 如建议的那样 本文 我能够成功连接 然而 从安全角度来看 我觉得使用 0 0 0 0 0 不太舒服
  • ASP.NET WebApi:如何使用 WebApi HttpClient 执行文件上传的分段发布

    我有一个 WebApi 服务处理来自简单表单的上传 如下所示
  • 使用compareTo和Collections.sort

    我有一个特许经营类别 其中包含所有者 特许经营所有者名称 州 特许经营所在州的 2 个字符串 和销售额 当天的总销售额 public class Franchise implements Comparable