java - 按多个参数对字符串列表进行排序

标签 java sorting lambda

我正在考虑如何使用两个参数对 ArrayList 进行排序。首先按字符串中某些字符的出现,然后按自然顺序。这是代码:

  ArrayList<String> words;
    words=getWords(sentence);//return all words from sentence
    words.sort(Comparator.comparing(o -> countChar(c,  o))
                     .thenComparing(Comparator::naturalOrder));

方法getWords(sentence)返回ArrayList<String>来自 sentence 的单词.

方法countChar(c,o)计算字符数 c在word中o .

添加.thenComparing(Comparator::naturalOrder))时IDE 显示 o应转换为 String并且它无法解析方法 thenComparing() .

可能是什么问题?

最佳答案

您的代码中有两个错误。

  1. 您需要提供通用参数来比较
  2. naturalOrder 返回一个比较器;调用它,而不是传递引用

尝试:

        words.sort(Comparator.<String, Integer>comparing(o -> countChar(c,  o))
                         .thenComparing(Comparator.naturalOrder()));

关于java - 按多个参数对字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815342/

相关文章:

使用 Java 7 的 HTTPs 协议(protocol)访问时,Java 小程序加载失败

java - 在 Java 中对双链表进行排序

python - 将列表元素转换为元组列表

python - 如何在spark并行处理中返回字典?

java - 使用流 groupingBy 时将字符串分组为多个组

java - 如何在android中使用java获取firebase中子项的列表大小?

c++ - 计数排序 我的输入是1,4,3,1 但输出是垃圾值,1,1,3 输入不正确

python - 将排列应用于列表的就地方法? (与按键排序相反)

java - 为什么返回的函数需要额外的转换(不兼容的类型)?

java - 在Java中使用Scanner,当字符串不是正则表达式模式时,如何使用hasNext(aString)?