Java基础之集合框架--Collections工具类中的sort()方法
程序员文章站
2024-01-14 09:42:22
...
package newFeatures8;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/* Collections.sort(List<T> list);
* 进行了该泛型方法进行了泛型限定:存入list集合里的元素必须实现Comparable接口
* 而Comparable接口也进行了泛型限定:必须是T类型或是T的父类型,
* 比如T是Student的话,写Comparable<Person> 更具有扩展性(Student extends Person)
* public static <T extends Comparable<? super T>> void sort(List<T> list)
*/
public class CollectionsDemo {
public static void main(String[] args) {
listSortDemo();
}
/**
* @author ljh
* @param nothing
* @return void
* @since 1.2
* @description 因为在Java API中 Set 集合要排序有TreeSet,Map要排序有TreeMap
* 由于List集合不具备排序行为所以要用到集合框架的工具类,Collections.sort(List<T> list),
* 爽到不行,这回你知道为什么sort方法的参数只是List集合了吧!
*/
public static void listSortDemo(){
//
List<String> list=new ArrayList<>();
list.add("abcd");//String类本身就是实现了Comparable接口
list.add("kkkkk");
list.add("z");
list.add("zz");
list.add("qq");
list.add("qq");
//1.8之前对list集合进行排序的做法
/*
System.out.println("排序前:"+list);
//Collections.sort(list);
Collections.sort(list,new strLenCompartor())
System.out.println("排序后:"+list);
*/
/*
* 1.8对list 集合新增的方法:
* (1:)default void sort(Comparator<? super E> c)
* (2:)default void forEach(Consumer<? super T> action)
* (3:)default Stream<E> parallelStream()
* (4:)default void replaceAll(UnaryOperator<E> operator)
* (5:)default boolean removeIf(Predicate<? super E> filter)
* (6:)default Spliterator<E> spliterator()
* (7:)default Stream<E> stream()
*/
//1.8之后对list集合进行排序的做法
//list.sort(null);//传入null表示按照自然排序
list.sort(new strLenCompartor());
System.out.println("排序后:"+list);
/*
* 现在需求改了,要按照字符串的长度进行排序
* 由于实现Comparable接口只是让实现类型具自然有比较行为
* 这时只需要实现Compartor接口就可以自定义比较行为
*/
}
/**
*
* @author ljh
* @description 静态内部类</br>
* 按照字符串的长度进行排序,如果字符串长度相同按按照名称排序
*/
static class strLenCompartor implements Comparator<String>{
@Override
public int compare(String s1, String s2) {
int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));
//当主要条件相同一定要按照次要条件排序
if (num==0) {
return s1.compareTo(s2);
}
return num;
}
}
}
推荐阅读
-
Java基础之集合框架--Collections工具类中的sort()方法
-
集合框架中操作集合对象的工具类:Collections
-
java学习笔记:集合框架的工具类Collections
-
Java中的集合---------Collections 类---集合的工具类
-
java集合框架工具类Collections,集合的操作
-
Java集合中的工具类-----Collections
-
Java基础详解之集合框架工具Collections
-
用java Map集合和框架Collections工具类模拟斗地主的几个过程
-
Java——集合中的工具类Collections的一些常用方法
-
Java基础详解之集合框架工具Collections