java学习随笔——queue
来源:互联网 发布:淘宝店装饰教程 编辑:程序博客网 时间:2024/06/07 18:13
随笔
PriorityQueue如果泛型为自己定义的类(例如类名为A),则添加元素至队列里时需要先重写compare方法来规定A的排序规则。否则会出现 java.lang.ClassCastException :XXX cannot be cast to java.lang.Comparable错误。贴下源码:
private void siftUp(int k, E x) { if (comparator != null) siftUpUsingComparator(k, x); else siftUpComparable(k, x); }
如果comparator (用户自定义排序)为空,则调用siftUpComparable()方法,该方法排序调用的是自然规则。siftUpComparable()源码如下:
private void siftUpComparable(int k, E x) { Comparable<? super E> key = (Comparable<? super E>) x; while (k > 0) { int parent = (k - 1) >>> 1; Object e = queue[parent]; if (key.compareTo((E) e) >= 0) break; queue[k] = e; k = parent; } queue[k] = key; }
自然规则排序使用的是先将参数转化为Comparable<? super E>类型再使用compareTo进行排序,而用户自定义类型无法强转为Comparable<? super E>类型,所以会报之前的那个错误。
阅读全文
0 0
- java学习随笔——queue
- Java学习随笔——RMI
- 学习随笔——Java数组
- Java学习笔记——容器之Queue
- 学习随笔——Java制作简单截图工具
- 学习随笔——Java循环语句小例子
- 学习随笔——Java类和对象小例子
- 学习Java: Queue
- Java学习随笔
- JAVA学习随笔
- JAVA学习随笔2
- JAVA学习随笔3
- JAVA学习随笔4
- JAVA学习随笔5
- JAVA学习随笔6
- JAVA学习随笔7
- JAVA学习随笔8
- java虚拟机学习随笔
- 爬豆瓣高分榜
- 启动程序脚本,shell版本
- 构造方法和以为方法的重载
- IO流
- Jin(CMake方式)
- java学习随笔——queue
- Kotlin 在控制台下的编译和运行
- C++11初探:类型推导,auto和decltype
- 排序算法 -- 选择排序
- 人工智能开源框架
- 集合
- 第几天?
- C++内存申请、实例化的方式
- 第4周项目6- 多项式求和