1.Comparable和Comparator
1.comparable是给java对象实现的,然后要实现compareTo方法进行排序 小于0排在前面
1、Collections.sort(java对象)
这种方式需要满足以下条件:
list集合中元素的数据类型是一个java对象;
该java对象必须实现Comparable类;
重写compareTo方法;
2.Collections.sort(list, new Comparator() {})实现compare方法
直接传入一个比较器,可以用 lambda 表达式
2.集合.reversed()实现反序
3.list.stream().sorted()
通过流式编程排序
1.直接点sorted()那么就是安照对象实现的comparable接口中的compareTo排序
2.sorted(new Comparator)
4.PriorityQueue通过二叉小顶堆实现
1.也可以通过构造时传入的比较器实现大顶堆。Comparator.reverseOrder()
2.优先队列的作用是能保证每次取出的元素都是队列中权值最小的
add(E e)和offer(E e)的语义相同,都是向优先队列中插入元素,只是Queue接口规定二者对插入失败时的处理不同,前者在插入失败时抛出异常,后者则会返回false。但是对于 PriorityQueue 这两个方法其实没什么差别
element()和peek()的语义完全相同,都是获取但不删除队首元素,也就是队列中权值最小的那个元素,二者唯一的区别是当方法失败时前者抛出异常,后者返回null。
remove()和poll()方法的语义也完全相同,都是获取并删除队首元素,区别是当方法失败时前者抛出异常,后者返回null。由于删除操作会改变队列的结构,为维护小顶堆的性质,需要进行必要的调整。
size()方法。