使用 Comparable 比较通用变量

2024-01-18

对于我班级中的一个作业,我们有一个名为 Pair 的类的集合,我们需要根据键的值按升序对其进行排序。

如果键是字符串或整数,我可以应用此方法,但是如何编写代码来比较我的项目,当它们是通用的时,如下所示?

我班上的教授解释了如何处理整数或字符串,但是当我的变量是通用的时,我完全不知所措。

以下是我的代码相关部分的副本。

import java.util.*;


public class Utils {

    public static<K extends Comparable<K>, V> Collection<Pair<K,V>> sortPairCollection(Collection <Pair<K,V>> col){
        ArrayList <Pair<K,V>> list = new ArrayList<>();
        //Code to compare

        return list;
    }

    public static void main(String[] args) {
        ArrayList <Pair<String,Integer>> list = new ArrayList<>();
        Pair<String, Integer> e = new Pair<>("One", 1);
        list.add(e);
        Pair<String, Integer> f = new Pair<>("Two", 2);
        list.add(f);

        Utils help = new Utils();
        help.sortPairCollection(list);
    }
}

这里的第二部分是我的 Pair 类的代码。 导入 java.io.Serialized; 导入java.util.Objects;

public class Pair <K,V> extends Object implements Serializable, Cloneable{


    public Pair(K k, V v){
       this.k = k;
       this.v = v;
    }


    public K k(){
       return k;
    }


    public V v(){
       return v;
    }


   /*
   ... //irrelevant data omitted
   */

   private final K k;
   private final V v;
}

选项 1.使用比较器

public class Cmp<K extends Comparable<K>, V> implements Comparator<Pair<K, V>> {
   @Override
   public int compare(Pair<K, V> o1, Pair<K, V> o2) {
      return o1.k.compareTo(o2.k);
   }
}

public class Utils {
    public static <K extends Comparable<K>, V> Collection<Pair<K, V>> sortPairCollection(
            Collection<Pair<K, V>> col) {
        ArrayList<Pair<K, V>> list = new ArrayList<>();
        Collections.sort(list, new Cmp<>());
        return list;
    }
}

选项 2。 实现可比性

public class Pair<K extends Comparable<K>, V> implements Comparable<Pair<K, V>> {
    private K k;
    private V v;
    @Override
    public int compareTo(Pair<K, V> o) {
        return k.compareTo(o.k);
    }
}
public class Utils {
    public static <K extends Comparable<K>, V> Collection<Pair<K, V>> sortPairCollection(Collection<Pair<K, V>> col) {
        ArrayList<Pair<K, V>> list = new ArrayList<>();
        Collections.sort(list);
        return list;
    }
}

Or just

public class Utils {
    public static <K extends Comparable<K>, V> Collection<Pair<K, V>> sortPairCollection(Collection<Pair<K, V>> col) {
        ArrayList<Pair<K, V>> list = new ArrayList<>();
        Collections.sort(list, (p, o) -> p.k.compareTo(o.k));
        return list;
    }
}

顺便说一句,您不必为静态方法创建实例。只需调用

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

使用 Comparable 比较通用变量 的相关文章

  • 按下按钮并在java中的新窗口中打开文件

    我创建了一个 JFrame 并放置了一个文本字段和按钮 在文本字段中我放置了从文本文件读取的名称 我知道我想单击按钮并打开一个已知窗口 我想在其中放置名称 其他信息来自同一个文件 这是我的代码 这是我的主框架 package Fronten
  • java.lang.ClassNotFoundException:javax.mail.MessagingException

    我想使用 eclipse 将电子邮件从我的 gmail 帐户发送到另一个邮件帐户 我使用 apache tomcat 7 0 34 作为我的 Web 服务器 并使用端口 8080 作为 apache 服务器 HTTP 1 1 并使用 JRE
  • 什么是抽象类? [复制]

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

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • 提供节点名或服务名,或未知 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
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 如何在JPanel中设置背景图片

    你好 我使用 JPanel 作为我的框架的容器 然后我真的想在我的面板中使用背景图片 我真的需要帮助 这是我到目前为止的代码 这是更新 请检查这里是我的代码 import java awt import javax swing import
  • 轻松的反应

    我有一个与这里描述的类似的案例 动态更改RESTEasy服务返回类型 https stackoverflow com questions 3786781 dynamically change resteasy service return
  • hibernate 6.0.2.Final 和 spring boot 2.7.0 的entityManagerFactory bean 未配置问题

    所以最近我想升级我的 Spring Boot 项目项目的一些依赖项 特别是这些组件 雅加达 EE 9 弹簧靴2 7 休眠 6 0 2 Final 完成此操作后 所有更新和代码折射 更新将 javax 导入到 jakarta 以及一些 hib
  • Android S8+ 警告消息“不支持当前的显示尺寸设置,可能会出现意外行为”

    我在 Samsung S8 Android 7 中收到此警告消息 APP NAME 不支持当前的显示尺寸设置 可能会 行为出乎意料 它意味着什么以及如何删除它 谢谢 通过添加解决supports screens 机器人 xlargeScre
  • partitioningBy 必须生成一个包含 true 和 false 条目的映射吗?

    The 分区依据 https docs oracle com javase 8 docs api java util stream Collectors html partitioningBy java util function Pred
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 如何在模块中导入 lib 文件夹

    我有一个 GAE 应用程序 其中包含三个模块和一个 lib 文件夹 当我尝试从 lib 文件夹导入第 3 方库时 GAE 弹出导入错误 我可以通过将 lib 符号链接到 Module 1 lib 和 Module 2 lib 并在每个模块中
  • 使用 axios 从 React 前端启用 CORS?

    我在前端使用 React 并且从我不拥有的另一个域调用 API 我的 axios 请求 axios requestURL method GET headers Access Control Allow Origin Content Type
  • 我的工具栏在 API 级别 19 (Kitkat) 上不显示,而在 API 级别 21 上显示

    我的代码没有在 Kitkat 上显示工具栏 这是我针对两个 Android 版本的屏幕截图 奇巧版本 棒棒糖版本 这背后的原因可能是什么 清单文件
  • Java 7u51不接受带有自签名证书的JNLP?

    我在网上看到Java版本7u51 将于2014年1月发布 将不再接受我自签名的Java Webstart应用程序 真的吗 如果这是真的 我是否有机会为我的 JNLP 申请构建一个解决方法 以便我即使在 2014 年 1 月之后也能够启动该申
  • Ansible concat vars 到字符串

    我花了一天的大部分时间试图解决这个问题 但到目前为止都失败了 我正在构建一些剧本来自动化 Splunk 中的功能 并尝试将清单组中的主机列表转换为 E G search head 1 2 3 4 5 6 7 8 我从该剧的调试输出中获得的预
  • 是否可以在 setup.py 中表达特定于平台的依赖项,而无需构建特定于平台的 Egg 版本?

    我们有一个占位符 Egg 它不包含任何代码 其存在的目的只是为了从 PyPi 存储库中提取依赖包列表 大多数这些依赖包与平台无关 但有些仅在 Win32 平台上使用 是否有可能以某种方式使依赖项成为有条件的平台 以便我的给定依赖项insta
  • 幕后:ORM 如何“思考”?

    我对 Rails ActiveRecord PHP Doctrine 以及类似的 ORM 背后的一些设计感兴趣 ORM 如何设法实现链式访问器等功能以及它们通常期望工作的深度 ORM 如何在内部构造查询 ORM 如何管理查询 同时维持所有预
  • javascript 设置标头 Access-Control-Allow-Origin [重复]

    这个问题在这里已经有答案了 我正在用 POST 测试 JS 但我并没有取得成功 使用代码 div testing js div
  • GCC 内联汇编:约束

    我很难理解 GCC 内联汇编 x86 中的角色约束 我有阅读手册 http gcc gnu org onlinedocs gcc Constraints html Constraints 它准确地解释了每个约束的作用 问题是 尽管我了解每个
  • 如何使用 Firebase Cloud Functions Storage 创建文件夹

    我怎样才能制作文件夹 帖子 存储桶 gt gs app appspot com posts code exports generateThumbnail functions storage object onChange event gt
  • 如何在 iOS 应用程序中使用 Fabric 注销 Twitter

    共享实例注销不起作用 我知道这对开发人员来说是一个大问题 有没有人有办法解决吗 谢谢 大约三个月前我遇到了这个问题 现在刚刚找到了解决方案 显然 清除 cookie 实际上会删除 Twitter 为之前登录的用户存储的信息 下面的代码对我有
  • 当对象穿过路径时,对路径进行动画处理的最简单方法是什么?

    考虑一个穿过长线性路径的矩形 弄清楚形状在动画早期的位置会很有用 在形状移动之前显示整个路径不是我想要的 通过将路径添加到窗格中可以轻松完成此操作 我想要在形状后面有一条尾线 代表该形状迄今为止所经过的路径 有谁知道如何在 Javafx 中
  • JDK7 中菱形接口的意外行为

    我的 JSF 托管 bean 中有一个属性 private List
  • Android ImageView 设置 Bitmap FitXY 不起作用

    我已经尝试了很长时间来设置位图 使其适合ImageView界限 它只是不起作用scaleType fitXY 我的位图图像尺寸小于ImageView的 保存为 100X100 像素 我希望我的位图图像适合并拉伸到ImageView 这是一些
  • 如何设置 dll 的入口点

    首先 我认为 dll DLLMain 中的入口点 但是当我尝试在 C 中导入它时 我收到一个错误 找不到入口点这是我的代码 include
  • 不使用 Apache POI 解析 Excel 文件

    我知道我们可以使用 Apache POI 来解析 Excel 文件并获取数据 但我听说一个奇怪的事情 Excel 文件可以以与我们解析 CSV 类似的方式传递 就像从文件流中读取文件并用 逗号 分隔符分隔每个列值 当我们解析Excel时 我
  • 默认 Java 密钥库包含哪些密钥?

    我了解默认的 Java 信任库包含根证书和其他与信任相关的证书 但是 默认 Java 密钥库中存储了哪些密钥 据我所知 密钥库用于 在 SSL 握手期间应将哪些身份验证凭据发送到远程主机进行身份验证 如果您是 SSL 服务器 您将在密钥交换
  • Solr (JVM) 每小时峰值

    SOLVED 在我们的例子中 问题是 SuggestRequestHandler requestHandler name suggest 现在已经设置了facelimit 10 此外 应用程序提出的每个建议请求都有多个请求 为什么这会导致
  • 在 WPF MVVM 中动态添加控件

    我正在开发一个动态搜索视图 其中单击按钮应添加一个包含 3 个组合框和 2 个文本框的新行 我该怎么做呢 如果您真的想做 mvvm 请尝试忘记 如何添加控件 您不必这样做 只需考虑您的视图模型 WPF 会为您创建控件 在您的情况下 假设我们
  • 使用 Comparable 比较通用变量

    对于我班级中的一个作业 我们有一个名为 Pair 的类的集合 我们需要根据键的值按升序对其进行排序 如果键是字符串或整数 我可以应用此方法 但是如何编写代码来比较我的项目 当它们是通用的时 如下所示 我班上的教授解释了如何处理整数或字符串