Java 字符串[]的排序ArrayList

Java 字符串[]的排序ArrayList,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个字符串[]的数组列表: ArrayListmystuff=newarraylist() 我想按最大数组大小升序对它们进行排序。例如: mystuff={[“这个”、“是”、“项目”, “一”]、[“这”、“是”、“项目”、“两”], [“项目”],[“项目”,“三”]} 应成为: mystuff={[“项目],[“项目”, “三”]、[“这”、“是”、“项目”, “一”],[“这”、“是”、“项目”、“两”]} 对于长度相等的数组,顺序无关紧要 编辑: Java编译器版本:JavaC1.

我有一个字符串[]的数组列表:

ArrayListmystuff=newarraylist()

我想按最大数组大小升序对它们进行排序。例如:

mystuff={[“这个”、“是”、“项目”, “一”]、[“这”、“是”、“项目”、“两”], [“项目”],[“项目”,“三”]}

应成为:

mystuff={[“项目],[“项目”, “三”]、[“这”、“是”、“项目”, “一”],[“这”、“是”、“项目”、“两”]}

对于长度相等的数组,顺序无关紧要

编辑:

Java编译器版本:JavaC1.6.0_20

使用时遇到的错误 @sepp2k的代码:


使用
集合。使用比较长度的
比较器对
进行排序

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));
        }
    }   
}