将 null 放置在列表末尾

2023-12-12

我需要将空对象放置在末尾List。这是我为此目的所做的示例:

public static void main(String... args) {
    List<String> strings = Arrays.asList(new String[]{"A", null, "B"});

    for(String string : strings) {
        System.out.println(string);
    }

    System.out.println("==================");

    List<String> result = new ArrayList<String>();
    List<String> nullStrings = new ArrayList<String>();

    for(String string : strings) {
        if(string != null) {
            result.add(string);         
        } else {
            nullStrings.add(string);
        }
    }

    result.addAll(nullStrings);

    for(String string : result) {
        System.out.println(string);
    }
}

我期待着一种更高效、更智能的方式来做到这一点。是否可以在实际列表中进行交换,以便将空节点放置在末尾,这样我就不需要其他两个列表(nullStrings,结果)和额外的迭代。

Update

排序不适用于我的情况。我编写的示例代码只是为了测试目的。实际上我有不同类型的对象。排序也会破坏位置。

说我有这个null, Obj2, Obj1,如果做任何类似排序的事情可能会发生Obj1, Obj2, null。但是我需要Obj2, Obj1, null.


您可以使用它对其进行排序Collections.sort和一个习惯Comparator.

这里是比较代码:

@Override 
public int compare(String left, String right) {
 if (left == right) {
   return 0;
 }
 if (left == null) {
   return 1;
 }
 if (right == null) {
   return -1;
 }
 return 0;
 }

请注意,根据此具有相等值的元素Comparator不会被重新订购。从Collections.sort:

这种排序保证是稳定的:相同的元素不会因排序而重新排序。

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

将 null 放置在列表末尾 的相关文章

随机推荐

  • 以html形式输入Integer时抛出BadValueError

    我正在使用 Python 创建 Google App Engine 应用程序 为了测试我的应用程序 我使用 html 表单输入数据 在我的表格中我有一行 tr td Age td td td tr
  • PHPStorm 8 + PHPUnit 4.2.6 错误

    我做不到PHPUnit 4 2 6跟 共事PHPStorm 8 PHPUnit 在 PHPStorm 8 设置中作为 phar 加载 每当我尝试在 PHPStorm 中运行单元测试时 我都会收到此错误 Parse error syntax
  • 将输出重定向到文本文件c#

    这是我的代码 Process pr2 new Process pr2 StartInfo FileName show snps pr2 StartInfo Arguments Clr x 2 out delta gt out snps pr
  • 转换后的 PDF 中缺少文档中替换的文本

    我从 Google Apps 脚本开始并尝试创建文件 Google Doc 的副本 然后替换复制文档中的文本并将其转换为 PDF 该功能工作正常 但替换的文本不会出现在 PDF 文件中 而是出现在复制的文件 我替换的位置 中 我读到了关于s
  • 角度数据表列可拖出表格

    是否可以避免该列 而不是拖出数据表视图区域 正如您可以自己看出的那样 我从此链接中谈论的内容https l lin github io angular datatables withColReorder when you try to dr
  • 是否存在禁用 file_get_contents() 函数工作的机制?

    i use file get contents 函数从站点获取数据并将数据存储在数据库中 如果有一天脚本开始不起作用 这对我来说将非常不方便 我知道 如果他们改变网站的结构 它可能会开始不起作用 但现在我担心 也许有机制可以禁用此功能的工作
  • Android 模拟器无法访问互联网

    我无法在模拟器中访问互联网 它甚至无法在模拟器浏览器上连接到谷歌 我已经检查过设置 数据已启用复选框已选中 在发布问题之前我提到了一些SO问题 As 这个答案建议 我没有启用 wifi 所以这似乎不是问题 作为另一个答案在同一个问题中 我尝
  • IBM Worklight - 连接/重新连接:WL.Client.connect 与 connectOnStartup 与 WL.Client.invokeProcedure

    在我们的项目中 我们试图弄清楚连接到服务器的最佳流程是什么 特别是在处理离线 在线场景等时 现在 对于我们来说 连接到 WL 服务器的所有三个选项似乎都是相似的 无论我们使用什么选项 我们都可以完美地调用我们的适配器过程 并且我们会收到在控
  • 使用 SendInput 发送两个或多个字符

    要发送字符 我们可以使用 SendInput 我如何使用它来发送多个字符 我尝试了这段代码 但它没有发送任何内容 INPUT in in type INPUT KEYBOARD in ki wScan 0 in ki time 0 in k
  • 如何结合代码优先和数据库优先方法

    假设我是一家公司的新开发人员 所以该项目已经有一个现有的数据库 为了处理这个项目 显然我需要搭建现有的数据库 数据库优先方法 它可以生成模型类供我处理 因此 我开始处理该项目 并希望向表中添加一个新列 因此我在模型类上添加一个新属性 然后我
  • 经典 ASP VBScript 中的 HMAC 算法 (SHA256)

    我正在尝试使用 SHA256 作为哈希在经典 ASP 中编写 HMAC 函数 我认为我做对了 但结果与列出的示例不同维基百科页面 我见过几个人们通过包含 WSC 在经典 ASP 中使用 HMAC SHA256 的示例 这不是我想做的 这是函
  • Python套接字同时接收多条消息

    我正在使用 python 3 套接字进行 TCP IP 聊天 并且在多个 socket send socket receive 对实例上遇到了同样的问题 举个例子 每次服务器更新已连接客户端的列表时 它首先发送一个字符串信号表明它将要执行此
  • NSString 保留计数 -1

    我想打印保留计数NSString in AppDelegate班级在didFinishLaunchingWithOptions method NSString str NSString alloc init NSLog str retain
  • C 中的运算符结合性特别是前缀和后缀递增和递减

    在 C 运算中 结合性是指递增 递减和赋值 2 postfix and 3 prefix and 16 Direct assignment 完整列表可以在这里找到C 中的维基百科运算符 我的问题是当我们有 int a b b 1 a b p
  • 无法构建 ASP.NET Core 2.0 + Angular 2/4 - 用户注册和登录应用程序

    我正在尝试在 IIS 服务器上部署 ASP NET Core 2 0 Angular 2 4 用户注册和登录应用程序 取自链接 https www pointblankdevelopment com au blog 134 aspnet c
  • 在 Java 中,对 Class.class 的引用有什么作用?

    我正在构建一个小型 Android 应用程序 但这更像是一个 Java 问题 而不是 Android 问题 浏览教程 有一些行看起来像 startService new Intent this MyService class MyServi
  • 如何获取接近另一种颜色的RGB值?

    如果我有 RGB 颜色 如何创建一个 javascript 函数 当另一个 RGB 值接近初始 RGB 时返回 true 否则返回 false 我已经使用过这个并且它对我来说非常有效 assuming that color1 and col
  • 如何在Python 3中通过FTP从内存上传数据?

    我想通过 FTP 将内存中的各种数据 数组内容 静态 html 代码等 上传到网络服务器 这仅适用于一个基本字符串 Hello World from ftplib import FTP import io bio io BytesIO b
  • 移动应用程序时会重置用户设置

    我注意到 如果您将该应用程序 exe 文件移动到另一个位置 用户设置将重置 据我了解 发生这种情况是因为应用程序数据文件夹中的位置也基于 exe 的路径 在生成哈希时会考虑到这一点 我知道有不同的替代方案 可以使用注册表或手动创建自定义配置
  • 将 null 放置在列表末尾

    我需要将空对象放置在末尾List 这是我为此目的所做的示例 public static void main String args List