java - 根据 boolean 值对列表进行部分排序

标签 java java-8

假设我有一个对象列表,我想根据对象的某个属性是否包含特定字符串在同一个列表中对它们进行分区。

SomeClassA someClass: 
   String attributeA;
   ... (other attributes)

例如,假设我有:

List<SomeClassA> someListA = (a list of SomeClassA); 

我想将 SomeClassA 的所有实例放在 attributeA 不包含字符串的所有实例之后,其中 attributeA 包含“_DUD”。

一个选项: 我知道我们可以遍历列表,根据条件是否为真(包含“_DUD”)创建并添加到两个列表,然后在第一个列表之后添加第二个列表,但是有没有办法做到这一点创建这些中间列表?

我宁愿不进行完整排序,因为顺序并不重要。我们只想将所有包含 _DUD 属性的实例放在一起。

(当然,这是一个替换了名称的简化示例,但我希望它能满足整体需求)

谢谢!

最佳答案

我建议使用以下算法:

  • 从列表的开头找到下一个包含“_DUD”的元素
  • 从列表末尾查找下一个不包含“_DUD”的元素
  • 交换元素
  • 重复直到你遇到

关于java - 根据 boolean 值对列表进行部分排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45806330/

相关文章:

Java System.getEnv()

java - 超过 Java 阶乘的 Kattis 时间限制

java - 添加WebSecurityConfigurerAdapter时Spring security默认登录表单消失

java - 使用通配符类型减少流

java - Spring Boot 无法正常工作出现一些错误?

java - Spring AOP : Around aspect not working

java - 是否有用于 appengine Java 报告生成的示例?

java - Android 定期写入内存上的文件时如何避免 I/O 问题

java - 使用java流在 map 中按值分组

java - 使用 Java pdfbox 将 jpg 文件插入 PDF 文档中 仅 1/4 的图像显示在 PDF 文档中