在Java中,如果你想要根据字符串的特定规则对List进行排序,你可以使用Collections.sort()
方法配合自定义的Comparator来实现。Comparator是一个函数式接口,允许你定义排序的规则。
![图片[1]_Java中基于字符串特定规则的List排序实现_知途无界](https://zhituwujie.com/wp-content/uploads/2024/07/d2b5ca33bd20240702130642.png)
下面是一个示例,展示如何根据字符串的特定规则(比如长度、字典顺序或者自定义的复杂规则)来对一个包含字符串的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>() {@Overridepublic 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>() {@Overridepublic 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
暂无评论内容