Java 字符串[]的排序ArrayList
我有一个字符串[]的数组列表: ArrayListJava 字符串[]的排序ArrayList,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个字符串[]的数组列表: ArrayListmystuff=newarraylist() 我想按最大数组大小升序对它们进行排序。例如: mystuff={[“这个”、“是”、“项目”, “一”]、[“这”、“是”、“项目”、“两”], [“项目”],[“项目”,“三”]} 应成为: mystuff={[“项目],[“项目”, “三”]、[“这”、“是”、“项目”, “一”],[“这”、“是”、“项目”、“两”]} 对于长度相等的数组,顺序无关紧要 编辑: Java编译器版本:JavaC1.
使用
集合。使用比较长度的比较器对进行排序
Collections.sort(mystuff, new Comparator<String[]>() {
public int compare(String[] x, String[] y) {
if(x.length < y.length) {
return -1;
} else if(x.length == y.length) {
return 0;
} else {
return 1;
}
}
});
Collections.sort(mystuff,newcomparator(){
公共整数比较(字符串[]x,字符串[]y){
如果(x.长度
编辑:这是一个完整的类,编译和运行时不会出错(并显示正确的结果):
import java.util.*;
公共类Bla{
公共静态void main(字符串[]args){
//创建列表
List mystuff=new ArrayList();
add(新字符串[]{“lilu”,“lolo”});
add(新字符串[]{“lala”});
add(新字符串[]{“lila”、“blabla”、“pfirsichkuchen”});
//排序表
Collections.sort(mystuff,newcomparator(){
公共整数比较(字符串[]x,字符串[]y){
如果(x.长度
Yikes,我的编译器抛出了一堆错误。是因为我正在导入:import java.util.*@khan0:这不是因为您正在导入java.util.*
。那很好。请编辑您的问题,以显示导致错误的整个代码和错误消息。还有你的java版本。。。(可能)创建两个Integer
实例以便使用compareTo
方法似乎有点浪费。非常感谢@sepp2k,它现在可以工作了@斯蒂芬C,我会接受你的建议,很快开始阅读。谢谢大家!可以移除整个if/else块,并用返回x.length-y.length替换。值不重要,只是它是零、正还是负。我仍然需要查看您试图编译的代码。看起来您将对排序的调用放在了表达式语法无效的地方(例如,在方法定义之外)。看起来你在某个地方遗漏了一些标点符号。我本来是在我的类声明中放置代码的,但是在导入后将其放在正确的位置将其减少为3个错误:@khan0:你需要将其放在一个方法中。@khan0:如果你只是随机复制和粘贴其他人的代码,我还可以建议你永远无法正确理解Java吗碎片。阅读一本好的教科书或Sun的在线Java教程。
import java.util.*;
public class Bla {
public static void main(String[] args) {
// Create list
List<String[]> mystuff = new ArrayList<String[]>();
mystuff.add(new String[] {"lilu", "lolo"});
mystuff.add(new String[] {"lala"});
mystuff.add(new String[] {"lila", "blabla", "pfirsichkuchen"});
// Sort list
Collections.sort(mystuff, new Comparator<String[]>() {
public int compare(String[] x, String[] y) {
if(x.length < y.length) {
return -1;
} else if(x.length == y.length) {
return 0;
} else {
return 1;
}
}
});
// Output list
for(String[] strs : mystuff) {
System.out.println(Arrays.toString(strs));
}
}
}