与比较器比较出现的字母

问题描述 投票:0回答:1

早安,

我在对字符串数组进行排序时遇到问题,根据其中哪些字符串中字母'p'最多的问题。即s1(苹果)早于s2(猿)...

我正在学习如何实现Comparator来执行此操作,然后使用s1.compareTo(s2)和lambda。最大的问题是,我不能为此使用流吗?

这是我对我的String数组COUNTRIES进行反向字母排序的方式

Comparator<String> reverseAlphabetic = (s1,s2) -> -s1.compareToIgnoreCase(s2);   

Arrays.sort(COUNTRIES,reverseAlphabetic);
System.out.println("\nCountries in reverse alphabetic order");
for (int i=0; i<10;i++)
    System.out.println("\t"+COUNTRIES[i]);
sorting java-8 java-stream comparator
1个回答
0
投票

您可以执行以下操作:

Comparator<String> comparator = (str1, str2) -> 
           (str1.length() - str1.replaceAll("p", "").length() -
            str2.length() - str2.replaceAll("p", "").length());

List<String> list = Arrays.asList("ape", "apple", "appple");
list.sort(comparator);

[苹果,苹果,猿]

© www.soinside.com 2019 - 2024. All rights reserved.