Java中基于字符串特定规则的List排序实现

在Java中,如果你想要根据字符串的特定规则对List进行排序,你可以使用Collections.sort()方法配合自定义的Comparator来实现。Comparator是一个函数式接口,允许你定义排序的规则。

图片[1]_Java中基于字符串特定规则的List排序实现_知途无界

下面是一个示例,展示如何根据字符串的特定规则(比如长度、字典顺序或者自定义的复杂规则)来对一个包含字符串的List进行排序。

示例 1: 按字符串长度排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ListSortExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("banana");
list.add("apple");
list.add("pear");
list.add("cherry");
// 使用Collections.sort()和Comparator按字符串长度排序
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return Integer.compare(s1.length(), s2.length());
}
});
// 使用Lambda表达式简化Comparator(Java 8及以上)
// Collections.sort(list, (s1, s2) -> Integer.compare(s1.length(), s2.length()));
System.out.println(list);
}
}
import java.util.ArrayList;  
import java.util.Collections;  
import java.util.Comparator;  
import java.util.List;  
  
public class ListSortExample {  
    public static void main(String[] args) {  
        List<String> list = new ArrayList<>();  
        list.add("banana");  
        list.add("apple");  
        list.add("pear");  
        list.add("cherry");  
  
        // 使用Collections.sort()和Comparator按字符串长度排序  
        Collections.sort(list, new Comparator<String>() {  
            @Override  
            public int compare(String s1, String s2) {  
                return Integer.compare(s1.length(), s2.length());  
            }  
        });  
  
        // 使用Lambda表达式简化Comparator(Java 8及以上)  
        // Collections.sort(list, (s1, s2) -> Integer.compare(s1.length(), s2.length()));  
  
        System.out.println(list);  
    }  
}
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ListSortExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("banana"); list.add("apple"); list.add("pear"); list.add("cherry"); // 使用Collections.sort()和Comparator按字符串长度排序 Collections.sort(list, new Comparator<String>() { @Override public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }); // 使用Lambda表达式简化Comparator(Java 8及以上) // Collections.sort(list, (s1, s2) -> Integer.compare(s1.length(), s2.length())); System.out.println(list); } }

示例 2: 按字典顺序排序(已经是默认行为,但可以作为示例)

虽然字典顺序排序是Collections.sort()的默认行为,但这里仍然展示如何使用Comparator来显式实现它。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ListSortExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("banana");
list.add("apple");
list.add("pear");
list.add("cherry");
// 按字典顺序排序(虽然这是默认行为,但这里展示如何使用Comparator)
Collections.sort(list, String::compareTo);
// 或者更简单地,直接使用Collections.sort(list);
System.out.println(list);
}
}
import java.util.ArrayList;  
import java.util.Collections;  
import java.util.Comparator;  
import java.util.List;  
  
public class ListSortExample {  
    public static void main(String[] args) {  
        List<String> list = new ArrayList<>();  
        list.add("banana");  
        list.add("apple");  
        list.add("pear");  
        list.add("cherry");  
  
        // 按字典顺序排序(虽然这是默认行为,但这里展示如何使用Comparator)  
        Collections.sort(list, String::compareTo);  
  
        // 或者更简单地,直接使用Collections.sort(list);  
  
        System.out.println(list);  
    }  
}
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ListSortExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("banana"); list.add("apple"); list.add("pear"); list.add("cherry"); // 按字典顺序排序(虽然这是默认行为,但这里展示如何使用Comparator) Collections.sort(list, String::compareTo); // 或者更简单地,直接使用Collections.sort(list); System.out.println(list); } }

示例 3: 根据自定义规则排序

假设我们想要根据字符串中第一个字符的ASCII值进行排序,如果第一个字符相同,则按长度排序。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ListSortExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("banana");
list.add("apple");
list.add("pear");
list.add("cherry");
// 自定义排序规则
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int firstCharCompare = Character.compare(s1.charAt(0), s2.charAt(0));
if (firstCharCompare != 0) {
return firstCharCompare;
} else {
return Integer.compare(s1.length(), s2.length());
}
}
});
// 使用Lambda表达式简化
// Collections.sort(list, (s1, s2) -> {
// int firstCharCompare = Character.compare(s1.charAt(0), s2.charAt(0));
// return firstCharCompare != 0 ? firstCharCompare : Integer.compare(s1.length(), s2.length());
// });
System.out.println(list);
}
}
import java.util.ArrayList;  
import java.util.Collections;  
import java.util.Comparator;  
import java.util.List;  
  
public class ListSortExample {  
    public static void main(String[] args) {  
        List<String> list = new ArrayList<>();  
        list.add("banana");  
        list.add("apple");  
        list.add("pear");  
        list.add("cherry");  
  
        // 自定义排序规则  
        Collections.sort(list, new Comparator<String>() {  
            @Override  
            public int compare(String s1, String s2) {  
                int firstCharCompare = Character.compare(s1.charAt(0), s2.charAt(0));  
                if (firstCharCompare != 0) {  
                    return firstCharCompare;  
                } else {  
                    return Integer.compare(s1.length(), s2.length());  
                }  
            }  
        });  
  
        // 使用Lambda表达式简化  
        // Collections.sort(list, (s1, s2) -> {  
        //     int firstCharCompare = Character.compare(s1.charAt(0), s2.charAt(0));  
        //     return firstCharCompare != 0 ? firstCharCompare : Integer.compare(s1.length(), s2.length());  
        // });  
  
        System.out.println(list);  
    }  
}
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ListSortExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("banana"); list.add("apple"); list.add("pear"); list.add("cherry"); // 自定义排序规则 Collections.sort(list, new Comparator<String>() { @Override public int compare(String s1, String s2) { int firstCharCompare = Character.compare(s1.charAt(0), s2.charAt(0)); if (firstCharCompare != 0) { return firstCharCompare; } else { return Integer.compare(s1.length(), s2.length()); } } }); // 使用Lambda表达式简化 // Collections.sort(list, (s1, s2) -> { // int firstCharCompare = Character.compare(s1.charAt(0), s2.charAt(0)); // return firstCharCompare != 0 ? firstCharCompare : Integer.compare(s1.length(), s2.length()); // }); System.out.println(list); } }

以上示例展示了如何在Java中根据字符串的特定规则对List进行排序。你可以根据需要调整Comparator中的比较逻辑来实现不同的排序规则。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞12 分享
Never,never,never,never give up.
永远不要、不要、不要、不要放弃
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容