Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中按sting长度排序ArrayList_Java_Sorting_Arraylist - Fatal编程技术网

java中按sting长度排序ArrayList

java中按sting长度排序ArrayList,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个数组列表 ArrayList<String[]> matches = new ArrayList<String[]>(); Collections.sort(matches, new Comparator<String>() { @Override public int compare(String word1, String word2) { return word2.length() - word1.length(

我有一个数组列表

ArrayList<String[]> matches = new ArrayList<String[]>();

Collections.sort(matches, new Comparator<String>() {
    @Override
    public int compare(String word1, String word2) {
        return word2.length() - word1.length();
        }
    });

您需要实现一个比较器,如下所示:

class stringLengthComparator implements Comparator<String> {
    public int compare(String o1, String o2) {
        if (o1.length() > o2.length()) {
            return 1;
        } else if (o1.length() < o2.length()) {
            return -1;
        } else {
            return 0;
        }
    }
}
Collections.sort(matches, new stringLengthComparator());
  • 您的意思可能是输入
    List
    ,而不是
    List

  • 为了对列表进行排序,您需要使用
    java.util.Collections.sort
    方法和按长度比较元素的自定义比较器:

    List<String> list = Arrays.asList(
            "ace", "a", "apple", "cord"
    );
    
    Collections.sort(list, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            return o2.length() - o1.length();
        }
    });
    
    System.out.println(list);
    
    List List=Arrays.asList(
    “a”,“a”,“苹果”,“绳索”
    );
    Collections.sort(list,newcomparator(){
    @凌驾
    公共整数比较(字符串o1、字符串o2){
    返回o2.length()-o1.length();
    }
    });
    系统输出打印项次(列表);
    

  • 这正是使用ArrayList执行程序的方式。确保导入正确的java.util类

        public static void main(String args[])
    {
        String matches[] = {"ace", "a", "apple", "cord"};
        List<String> list = new ArrayList<String>();
        Collections.addAll(list, matches);
        Collections.sort(list, new Comparator<String>(){
            public int compare(String o1, String o2)
            {
                return o1.length() - o2.length();
            }
        });
    
        Collections.reverse(list);
        System.out.println(list);
    }
    
    Input: "ace", "a", "apple", "cord"
    Output: [apple, cord, ace, a]
    
    publicstaticvoidmain(字符串参数[])
    {
    字符串匹配[]={“ace”、“a”、“apple”、“cord”};
    列表=新的ArrayList();
    Collections.addAll(列表、匹配项);
    Collections.sort(list,newcomparator(){
    公共整数比较(字符串o1、字符串o2)
    {
    返回o1.length()-o2.length();
    }
    });
    收款。反向(列表);
    系统输出打印项次(列表);
    }
    输入:“ace”、“a”、“apple”、“cord”
    输出:[苹果、线缆、ace、a]
    

    另外,这已经过测试,它的工作方式完全符合您的要求。

    自Java 8以来,您可以直接使用方法
    List.sort()


    这适用于Java8

    Collections.sort(dictionary, (a, b)->Integer.compare(a.length(), b.length()));
    

    ace,a,apple,cord
    只是
    ArrayList
    ,而不是
    ArrayList
    。请解释您迄今为止为解决此问题所采取的步骤。您试图解决此问题的地方是哪里?
    集合。排序
    ,而不是
    数组。排序
    List<String> stringList = Arrays.asList("ace", "a", "apple", "cord");
    stringList.sort(Comparator.comparingInt(String::length).reversed());
    
    apple, cord, ace, a
    
    Collections.sort(dictionary, (a, b)->Integer.compare(a.length(), b.length()));