我有一个程序,它接受一个单词和一个文本文件字典,并在字典中搜索与给定单词相等的单词组合(是字母表)。
我最后得到了一个字符串数组的Arraylist,每个数组都是一个包含它所使用的单词的解决方案,Arraylist是所有的解决方案。
List<String> list = Arrays.asList(array);
list.sort(Comparator.comparing(String::length).reversed().thenComparing(String::compareTo));
它首先按字长(降序)排序,然后对等长字使用字母排序。
我现在对各个数组进行了排序,但我正试图按照某些规则在arraylist中对它们进行排序:
首先,不需要为了排序而将数组转换为list
。
其次,您应该使用thencomparator.NaturalOrder())
而不是thencomparator(String::CompareTo)
,因为这将使用一个单一的比较器
,而不是创建一个委托给方法引用的新的比较器
。
至于您的问题,我不认为有一个比较器
,所以创建您自己的。使用thencomparate()
构建复合比较器
是很好的,但并不总是正确的方法。
因此,您的代码可以是(假设您的排序标准正确):
List<String[]> solutions = /* code here */;
// First, sort each individual solution (array)
for (String[] solution : solutions) {
Arrays.sort(solution, Comparator.comparing(String::length)
.reversed()
.thenComparing(Comparator.naturalOrder()));
}
// Second, sort the solutions (list)
solutions.sort((solution1, solution2) -> {
// 1) By number of words (ascending)
int cmp = Integer.compare(solution1.length, solution2.length);
// 2) By length of word (descending)
for (int i = 0; cmp == 0 && i < solution1.length; i++)
cmp = Integer.compare(solution2[i].length(), solution1[i].length());
// 3) Alphabetically (ascending)
for (int i = 0; cmp == 0 && i < solution1.length; i++)
cmp = solution1[i].compareTo(solution2[i]);
return cmp;
});
在我看来最好的情况应该是O(log n),但不确定最坏的情况...也许O(n^2)一次只能匹配一个字母。 谁能给我更多的点子吗?
我正在玩排序数组,我弄清楚了如何对int数组进行合并排序。但是我不知道合并字符串数组。在正常排序时,对字符串数组进行排序很容易,但合并排序不同。我到目前为止所做的代码如下,正在处理int数组。
问题内容: 我有一个数组 并且需要对其进行排序,使其看起来像; 我尝试了排序功能; 但这给出了命令 我试图考虑一个正则表达式可以正常工作,但无法解决这个问题。 如果有帮助,格式将始终为2个字母,x个数字,然后是任意数量的字符。 问题答案: 这称为“自然排序”,可以像这样在JS中实现: 要以相反的顺序排序,只需交换参数即可: 或简单地
对于这个项目,我得到了一个字符串数组和一个整数数组。int[1]是字符串[1]的排名。我需要使用mergesort按1到n的顺序对int数组进行排序,我在下面已经完成了这项工作。但是当int数组被移动时,我还需要切换字符串数组的位置,以便它们都被排序,如果这有意义的话?我不知道我的编码有什么问题,甚至我的想法是否真的有效,但我一直在stringSorted[k]=stringRight[j]上得到
问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:
本文向大家介绍Swift对字符串数组进行排序,包括了Swift对字符串数组进行排序的使用技巧和注意事项,需要的朋友参考一下 例子 3.0 最简单的方法是使用sorted(): 或者 sort() 您可以将闭包作为排序参数: 尾随闭包的替代语法: 但是,如果数组中的元素不一致,则会出现意外结果: 要解决此问题,请对元素的小写版本进行排序: 或者import Foundation使用NSString的