Java语言程序设计怎么将字符串的列表按照它们的长度排序呢

Java语言程序设计怎么将字符串的列表按照它们的长度排序呢
Java语言程序设计怎么将字符串的列表按照它们的长度排序呢
Java语言程序设计怎么将字符串的列表按照它们的长度排序呢

import java.util.*;
class TreeSetTest
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet(new MyStringLength());
ts.add("abcde");
ts.add("ab");
ts.add("abc");
ts.add("a");
ts.add("abcd");
ts.add("1");

    Iterator it = ts.iterator();
    while(it.hasNext())
    {
        System.out.println(it.next());
    }
}

}

class MyStringLength implements Comparator
{
//重写 compare 方法
public int compare(Object obj1,Object obj2)
{
String str1 = (String)obj1;
String str2 = (String)obj2;
/*
return str1.length() - str2.length();
如果这样直接返回长度的值,这样会把相同长度的数据简略掉。
*/
int num = str1.length() - str2.length();
if(num==0)
{
return str1.compareTo(str2); //如果长度相同比较大小。
}
return num;
}
}

这是基于JDK1.8,望采纳。

public class StringLengthCompare {

    public static void stringLengthCompareDesc(List<String>stringList){
        Collections.sort(stringList, Comparator.comparingInt(String::length).reversed());
    }
    public static void stringLengthCompareAsc(List<String>stringList){
        Collections.sort(stringList, Comparator.comparingInt(String::length));
    }

    public static void main(String[] args) {
        List<String> strings = new ArrayList<>(Arrays.asList("2345","1","123"));
        System.out.println("升序:");
        stringLengthCompareAsc(strings);
        strings.forEach(System.out::println);
        System.out.println("降序:");
        stringLengthCompareDesc(strings);
        strings.forEach(System.out::println);
    }
}