根据名称模式对字符串数组进行排序

时间:2019-02-12 14:23:48

标签: java arrays java-8 comparator

我想通过是否包含自定义模式对字符串数组进行排序。

我尝试使用比较器进行自定义排序,但是它们都基于升序或降序排序。我的要求如下:

String[] strArr = { "maven", "maven_apache", "java", "multithreading", "java_stream" };
String patternToMatch = "java";

然后输出应该是一个排序数组,其字符串首先包含模式java,然后是其他模式:

String[] strArr = { "java", "java_stream", "maven", "maven_apache", "multithreading" };

2 个答案:

答案 0 :(得分:7)

定义一个Comparator并根据其对元素进行排序很简单:

Arrays.sort(strArr, Comparator.comparing(x -> !x.startsWith("java")));

答案 1 :(得分:0)

我认为这可以为您工作。您可以使用它来确定字符串是否以“ java”开头,然后如果返回true,则将其交换到数组的第一个已知的“非java”。

布尔布尔型startsWith(字符串前缀,整数toffset)

测试此字符串的子字符串是否以指定的索引开头。 参数: prefix-前缀。 toffset-从何处开始查找此字符串。

返回: 如果参数表示的字符序列是此对象的子字符串的前缀(从索引toffset开始),则为true;否则为true。否则为假。如果toffset为负或大于此String对象的长度,则结果为false;否则,结果为false。否则结果与表达式

的结果相同
      this.substring(toffset).startsWith(prefix)