java排序如果包含然后按abc

标签 java sorting

嘿,我想按名称对照片进行排序,首先我想要所有包含“个人资料”一词的照片,然后按 ABC 比较其余的照片

目前我只按名称排序

            photos
            .stream()
            .sorted(Comparator.comparing(Photo::getFileName))
            .collect(Collectors.toList());

我怎样才能实现这一目标?谢谢

最佳答案

编写逻辑来确定排序“优先级”,值越低,优先级越高,例如

  • 0 = 包含“个人资料”
  • 1 = 其他所有内容

然后先按优先级排序,然后再按名称排序。

在下面的示例中,我们使用正则表达式进行不区分大小写的“包含”检查,并对其进行预编译以获得更好的性能。

Pattern containsProfile = Pattern.compile("profile", Pattern.CASE_INSENSITIVE);

photos.stream()
      .sorted(Comparator.comparingInt((Photo p) -> containsProfile.matcher(p.getFileName()).find() ? 0 : 1)
                        .thenComparing(Photo::getFileName))
      .collect(Collectors.toList());

关于java排序如果包含然后按abc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65302745/

相关文章:

java - 使用 while 循环弹跳球,我需要将每次弹跳减少 30% 直到 0,然后退出循环以避免无限循环

java - JTable通过代码选择不连续的单元格

perl - 按值对多维散列进行排序并打印最高值

java - 根据键大小对 HashMap 键进行排序

c# - 如何在 List<int> 中查找重复的连续数字?

java - 为什么Fragment无法连接数据库

java - java中如何处理大输入?

java - 具有可选返回类型的方法返回空值

c - 如何使用libavl?

c# - 基于逗号分隔的字符串值对 collection<T> 进行排序的代码片段