如何处理比较器中的空比较方法参数?

2024-01-05

我已经创建了一个实现Comparator<Entity>,但是当我使用这个比较器对一个Array<Entity>。我将收到一个java.lang.NullPointerException,因为当我将实体映射到已删除的静态集合时。现在我的问题是我不知道要返回什么来跳过比较方法。

public class CustomComparator implements Comparator<Entity> {

   public int compare(Entity e1, Entity e2) {
       if( e1== null || e2 == null) {
           return // don't know what to return to skip this method;
       }

       Vector2 e1Pos = Mapper.transform.get(e1).position;
       Vector2 e2Pos = Mapper.transform.get(e2).position;

   }

}

你不能“跳过”比较。您希望排序代码做什么?你必须向它提供一个结果。

常见的有两种选择:

  • Throw a NullPointerException表明你只是不支持比较null价值观。这明确是一个选项compare http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#compare-T-T-文档
  • 决定null先于一切,但等于其自身

后者的实现将类似于:

public int compare(Entity e1, Entity e2) {
    if (e1 == e2) {
        return 0;
    }
    if (e1 == null) {
        return -1;
    }
    if (e2 == null) {
        return 1;
    }
    Vector2 e1Pos = Mapper.transform.get(e1).position;
    Vector2 e2Pos = Mapper.transform.get(e2).position;
    return ...;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理比较器中的空比较方法参数? 的相关文章

随机推荐

  • Spring Boot - 将 /health 端点的位置更改为 /ping/me

    我设置了endpoints health path财产给 ping me 但我无法使用访问端点http localhost 9000 ping me http localhost 9000 ping me它仅适用于http localhos
  • VB.Net中的主要函数在哪里

    我已经接管了 VB Net WinForms 应用程序的支持 我其实是一名c 开发人员 比较熟悉c 项目中Visual Studio项目的设置 现在我试图确定为什么我的应用程序在特定的 XP 安装上崩溃 我在这里阅读了建议 http soc
  • Layer 与 Quickblox baas 比较

    Layer 与 Quickblox 哪个更好 更容易实现 性能特点 用于消息 VoIP 和视频聊天 我是否需要将 parse com 添加到这些消息传递解决方案中以进行内容存储 一些区别点是 Quickblox 支持视频和音频通话 而 La
  • Info.plist 格式不正确

    我正在顺利地完成我的 iOS Xcode 项目 然后突然当我尝试运行它时 我开始收到以下错误 error couldn t parse contents of Users pavitarsidhu Desktop AmigoDash Sid
  • 如何在tensorflow中实现t-SNE?

    我正在尝试在张量流中实现 t SNE 可视化以执行图像分类任务 我主要在网上找到的都已经在Pytorch中实现了 看here https learnopencv com t sne for feature visualization 这是我
  • 如何在perl cgi中制作二维码

    我正在尝试创建一个网站 其中包含供人们填写的表单 当用户按下 提交 按钮时 每个表单字段中的文本将连接成一个文本字符串 用于制作二维码 我该如何做到这一点以及哪种语言最适合大多数浏览器兼容 此外 我希望文本字段有一个与之关联的新行 n 以使
  • 使用托管代码中的非托管代码

    我的项目是用 MFC 开发的 它是未管理的代码 现在我需要通过重用大多数 MFC 类 在 C 中创建类似的应用程序 是否可以直接从 MFC dll 导出类 结构 枚举 以便我可以使用 dllimport 将其导入到我的 C 中并使用它 是的
  • Flutter - http.get 在 macos 构建目标上失败:连接失败

    我开始将我的 Flutter 应用程序移植到macOS 桌面 用户界面开始很好 但是 一旦应用程序进行网络调用 它就会立即失败 并显示连接失败 操作系统错误 不允许操作 运行单行 final response await http get
  • Kubernetes nslookup kubernetes.default 失败

    我的环境 OS CentOS 8 2 Kubernetes Vesion Client Version v1 18 8 Server Version v1 18 8 我已经成功配置了 Kubernetes 集群 一个主节点和一个工作节点 但
  • 按 xts 中的 period.apply() 分组

    你好 我有一个 xts 对象 有 4 个变量 2 个 id 变量和 2 个度量 gt head mi xts squareId country smsIN smsOUT 2013 12 01 00 00 00 9999 39 0 49537
  • 导入错误:没有名为脆形式的模块

    我正在开发一些 django 应用程序 但仍然很菜鸟 想使用脆皮形式 但 Eclipse 和 django 无法识别它 尝试运行服务器或 shell python manage py runserver 有时候是这样的 Traceback
  • 使用 MediaStore 存储图像会使特定三星设备上的应用程序崩溃

    我已经在这个问题上苦苦挣扎了一段时间 不幸的是其他答案没有给我任何线索 我的应用程序允许用户拍照并将其存储在本地 对于大多数设备来说一切正常 但是我遇到了崩溃运行 Android 9 API 28 的特定三星设备 设备示例有 三星 SM G
  • 如何确定 Apache Spark Dataframe 中的分区大小

    我一直在使用 SE 上发布的问题的出色答案来确定分区数量以及数据帧中分区的分布需要了解 Spark Dataframe 中的分区详细信息 https stackoverflow com questions 39217964 need to
  • 如何提高申请的主观速度?

    今天 我的同事注意到 当在进度指示器中添加小数位时 会导致程序运行得比没有小数位更快的印象 即不是 1 2 3 而是显示 1 1 2 1 4 1 6 我检查了它 令我惊讶的是我得到了相同的印象 尽管我知道它是伪造的 这让我想知道 还有哪些其
  • 如何使用 javascript 或 jquery 隐藏悬停时的图像路径

    Any one who know the answer please give me the suggestion to do this I am using mozilla firefox browser When i hover the
  • Sails.js - PATH 变量 - sails 命令无法识别

    我在 Windows Server 2008 上 npm 安装 Sails js 后 无法识别 sails 命令 有人可以提示我在 PATH 变量中使用哪些值吗 据我了解 Node exe 运行 sails js 文件 但是 如果我尝试在
  • -DNDEBUG 通常来自哪里?

    我们的构建系统发生了某种变化 优化的构建不再得到 DNDEBUG https gcc gnu org onlinedocs gcc Preprocessor Options html index D 1添加到编译行 我搜索了我们的 make
  • 您正在运行 vue-i18n 的 esm-bundler 版本。建议将您的捆绑程序配置为显式替换功能标志全局变量

    我创建了一个 ionic 应用程序并添加了 vue i18n npx ionic start myapp tabs type vue npm install vue i18n next 我完成了 VueI18n 设置的第一步 并将其添加到
  • 使用子查询的 Oracle 多行更新

    我正在尝试 洗牌 名称表中的last names 值 我想使用子选择查询来随机化名称的顺序并相应地更新它们 我想这样做是出于混淆原因 但希望它仍然看起来像一个真实的数据集 下面的语句返回 ORA 01427 单行子查询返回多于一行 我怎样才
  • 如何处理比较器中的空比较方法参数?

    我已经创建了一个实现Comparator