通过java中的sting长度对ArrayList进行排序

时间:2015-07-25 18:48:48

标签: java sorting arraylist

我有一个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中字符串的长度对此ArrayList进行排序。我希望列表按降序排列。

Input = ace, a, apple, cord

Output = apple, cord, ace, a

5 个答案:

答案 0 :(得分:1)

从Java 8开始,您可以直接使用方法List.sort()

List<String> stringList = Arrays.asList("ace", "a", "apple", "cord");
stringList.sort(Comparator.comparingInt(String::length).reversed());

stringList将以降序排列:

apple, cord, ace, a

答案 1 :(得分:0)

你需要实现一个比较器,如:

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

然后你就像那样对ArrayList进行排序:

Collections.sort(matches, new stringLengthComparator());

答案 2 :(得分:0)

  1. 您可能需要List<String>,而不是List<String[]>作为输入。

  2. 为了对列表进行排序,您需要使用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);
    

答案 3 :(得分:0)

这就是你要如何使用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]

P.S。这已经过测试,它可以按照您想要的方式工作。

答案 4 :(得分:0)

这适用于 Java 8。

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