我想通过是否包含自定义模式对字符串数组进行排序。
我尝试使用比较器进行自定义排序,但是它们都基于升序或降序排序。我的要求如下:
String[] strArr = { "maven", "maven_apache", "java", "multithreading", "java_stream" };
String patternToMatch = "java";
然后输出应该是一个排序数组,其字符串首先包含模式java
,然后是其他模式:
String[] strArr = { "java", "java_stream", "maven", "maven_apache", "multithreading" };
答案 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)