【发布时间】:2017-06-07 12:04:54
【问题描述】:
我有一个程序,它接受一个单词和一个文本文件字典,并在字典中搜索与给定单词相等(是变位词)的单词组合。
我最终得到一个字符串数组的 Arraylist,每个数组都是一个包含它使用的单词的解决方案,而 Arraylist 就是所有解决方案。
然后我遍历数组列表并将数组排序为:
List<String> list = Arrays.asList(array);
list.sort(Comparator.comparing(String::length).reversed().thenComparing(String::compareTo));
首先按字长(降序)排序,然后使用字母作为等长单词的决胜局。
我现在已经对各个数组进行了排序,但我正在尝试按照某些规则在数组列表中对它们进行排序:
- 按字数递增
- 对于包含相同数量单词且所有单词长度相同的数组,这些数组按字母顺序排序。
- 字数相等,但长度不同:最长的不相等长度在前。例如,如果 a[0] 长度 == b[0] 长度但 b[1] 长度>a[1] 长度,则 b 先出现。
它们已经按单词的升序存储,因为首先找到单个单词的解决方案,然后是 2 个单词,依此类推,被附加到数组列表中。
现在由于数组在排序后也是按字长降序排列的,我认为必须有一个简单的比较器来实现上述目的,但我正在努力做到这一点。
【问题讨论】:
标签: java arrays sorting arraylist comparator