簡體   English   中英

在java中按sting長度對ArrayList進行排序

[英]Sorting ArrayList by sting length in java

我有一個 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

這適用於 Java 8。

Collections.sort(dictionary, (a, b)->Integer.compare(a.length(), b.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;
        }
    }
}

然后你只需像這樣對你的 ArrayList 進行排序:

Collections.sort(matches, new stringLengthComparator());
  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);

這正是您將如何使用 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]

PS 這已經過測試,它完全按照您想要的方式工作。

從 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM