当前位置: 首页 > 知识库问答 >
问题:

如何首先对包含“m”的字符串数组进行排序,然后对其他所有内容进行排序

雷国兴
2023-03-14
String[] strArray = {"xyz", "aaazzz","abc","mft","gh","j", "aaazaz", "mm", "am"};

Arrays.sort(strArray, Comparator.comparing((s) -> s.contains("m")));
System.out.println("Array sorted by 'm': " + Arrays.toString(strArray));

我已经能够得到这个数组,因此它是使用' m '排序的,但是结果是按保护顺序排序的——因为所有包含' m '的字符串都在末尾。

我的打印输出显示:;

Array sorted by 'm': [xyz, aaazzz, abc, gh, j, aaazaz, mft, mm, am]

我考虑过使用indexOf(),但我还没能找到一种方法让它工作。

非常感谢您的建议!

共有1个答案

阚乐湛
2023-03-14

boolean值的自然顺序是false-

您需要更改Comparator的条件,以便放置包含m元素以及排序列表的开头:

Comparator.comparing(s -> !s.contains("m"))

您可能希望对两组字符串(有和没有m)也进行排序。为此,您可以使用方法thenComping(),它允许基于以下几个条件构建聚合比较器:

Comparator.comparing((String s) -> !s.contains("m"))
    .thenComparing(Comparator.naturalOrder());

请注意,当比较器链接在一起时,类型推断机制无法根据目标类型(即预期的聚合比较器)推断链接方法中使用的参数类型。我们需要在lambda表达式中提供一个显式的,如上面的< code>(String s)所示

 类似资料:
  • 问题内容: 我目前正在创建一种排序方法,该方法由mysql查询的值组成。 这是数组的简要视图: 我已经成功地基于数字id值进行了正常的排序,但是我想按“国家/地区”字段的内容对数组进行排序(如果在这种情况下包含设置的字符串和国家/地区代码),然后通过id字段。 以下代码段是我的第一个想法,但我不知道如何将其合并到工作功能中: 你会怎么做? 谢谢! 不幸的是,我真的一无所获。 这是我目前拥有的东西,

  • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

  • 本文向大家介绍Swift对字符串数组进行排序,包括了Swift对字符串数组进行排序的使用技巧和注意事项,需要的朋友参考一下 例子 3.0 最简单的方法是使用sorted(): 或者 sort() 您可以将闭包作为排序参数: 尾随闭包的替代语法: 但是,如果数组中的元素不一致,则会出现意外结果: 要解决此问题,请对元素的小写版本进行排序: 或者import Foundation使用NSString的

  • 问题内容: 我想对具有nr的字符串进行排序。我怎么做? 可以说我的整数是 在主要我做class2.Sort(); 提前致谢。 问题答案:

  • 我有一个字符串数组,中间有一个空白。我想根据空白之前的第一个子字符串对内容进行排序,然后根据空白之后的子字符串对内容进行排序。 例如,如果我的数组如下所示:,那么最后我需要。 我尝试在下面实现一个新的比较器: 但是我得到了这个错误: MyClass。java:7:错误:找不到合适的排序方法(字符串[], 这个错误听起来像是集合框架不支持排序字符串,这没有多大意义。

  • 问题内容: 我只想使用Collections.sort或Arrays.sort来先按x然后按y排序点列表(类Point)。 我有一个像这样实现Comparable的Ponto类: 但是现在我也想在x之后按y排序。 如何通过修改上面的代码来做到这一点?还是这是一种更好且“干净”的方式?我还使用了将此代码传递给C ++,在其中使用等效的等效方法创建了一个名为Point的结构。 问题答案: 将相同的比较