摘要: linkedlist 既实现了 list 接口,又实现了 queue, deque 接口, 底层用链表数据结构,便于增删元素和顺序迭代 arraydeque 实现了 queue和deque接口 , 底层用数组实现,便于查找 arraylist 实现list接口,底层为数组 阅读全文
posted @ 2022-11-24 14:50 yanher 阅读(64) 评论(0) 推荐(0)
摘要: 这种方式有问题的,因为 o1 - o2 可能使整型溢出,导致排序结果异常 : Arrays.sort(input, (o1,o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0]); 应该把 减法运算改为比较运算: Arrays.sort(inpu 阅读全文
posted @ 2022-11-21 22:32 yanher 阅读(48) 评论(0) 推荐(0)
摘要: public class MyComparator<Integer> implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2){ // o1 代表前一个元素, o2代表后一个元素 //返 阅读全文
posted @ 2022-11-21 21:31 yanher 阅读(32) 评论(0) 推荐(0)
摘要: 1. 如果方法体为表达式,算式 , 可以不加大括号 Arrays.sort(startEnd, (o1,o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0]); 2. 如果要加大括号,则必须是完整的语句, 需要有 “return ”关键字, 语句 阅读全文
posted @ 2022-11-21 20:40 yanher 阅读(107) 评论(0) 推荐(0)
摘要: 1. 使用list, 调整的时候list可以删除尾部的元素 ArrayList<Integer> list = (ArrayList<Integer>)Arrays.stream(a).boxed().collect( Collectors.toList()); //大根堆 buildHeap(li 阅读全文
posted @ 2022-11-19 12:36 yanher 阅读(42) 评论(0) 推荐(0)
摘要: 方法一: spring aop 通过spring aop 配置需要扫描的包,配置切点切面,在切点前后获取方法的注解,如果有限流器注解则调用注解参数对应的限流器 方法二: javaagent + javassist/cglib 基于javaagent来进行类加载事件监听和行为触发,基于javassis 阅读全文
posted @ 2022-11-16 07:33 yanher 阅读(129) 评论(0) 推荐(0)
摘要: 默认的str.split("xx") , 如果xx为正则特殊字符比如 “.” 需要转义“\\.” 默认的 str.split("xx") 在jdk代码 底层传入 split(regex,0) 其中第二个参数 0 代表丢弃空值的子字符串, -1 代表保留空值的子字符串, 其它正整数表示输出字符串数组的 阅读全文
posted @ 2022-11-13 21:15 yanher 阅读(33) 评论(0) 推荐(0)
摘要: java String 类型为Final, 字符串操作后直接返回新的字符串,原字符串对象没有变 阅读全文
posted @ 2022-11-13 14:47 yanher 阅读(12) 评论(0) 推荐(0)
摘要: 因为堆结构只保证 根节点比双子节点都大或小 1 求最小的n个数: 构建n个数的大顶堆,依次弹出堆顶再往下调整(用例省略) 2 求最大的n个数: 构建n个数的小顶堆,依次弹出堆顶再往下调整(用例省略) 3 求第n大的数: 构建所有元素的大顶堆,依次弹出堆顶,堆底放到堆顶并向下调整,重复n次 用例: p 阅读全文
posted @ 2022-11-13 04:33 yanher 阅读(30) 评论(0) 推荐(0)
摘要: 1 左右哨兵等于pivot的情况要接着走,不然有可能一直不动,无限循环 2 需要先走右指针再走左指针,因为pivot在最左侧,最终停留点应该比pivot小,这样交换后小的在前; 如果左侧先走,最终停留点比pivot大 3 迭代下一轮循环的时候,不要包括相遇点,因为这个点前面都比它大,后面都比它小,不 阅读全文
posted @ 2022-11-13 02:34 yanher 阅读(99) 评论(0) 推荐(0)