-
Collection 是根接口 基础接口✅ Comparable接口✅ 只有一个compareTo接口方法 Iterator接口✅ 有hasNext和next方法 还有一个default的remove方法,但没有实现,只是抛出异常 1. Set 接口 无序、不能重复 主接口 ✅ 方法如下: size / isEmpty / contains / iterator / toArray / add / remove / containsAll / addAll retainAll (保留这部分,其他del)/ removeAll(Collection) / clear / equals / hashCode spliterator …
Read More -
default 关键词 在接口中可以有实现方法。可以改接口而不再次编译。 但多重继承的时候,由于接口A和接口B都有此default实现的方法,因此,出发实现类实现了此default方法,否则报错。 spliterator 接口实现了并发的迭代,普通用Iterator接口,在每个collection中都有此实例(Hashmap的spliterator) Collections.unmodifiableSet 无法修改的Collection 如果Collection 是一个unmodifiable Set,使用copyof方法不一定能做出一个copy 如果需要队列,请使用PriorityQueue。当你想要一个集合时,使 …
Read More -
拓扑排序 (topological-sort) 状态压缩BFS 某个点是否访问可以采用二进制的方式进行 此方法对于点数字有限制,需要保证 二进制数字转化的十进制数 < Integer.Max 对于已经访问可以设置该点为1,没有访问可以设置为0 访问第i个点的状态:state=(1 << i) & mask 更改第 ii 个点状态为 11:mask = mask | (1 << i) 其中mask的定义为 001 => 1号点已经访问 100 三号点已经访问 图着色问题 跳表 Skiplist 有限制最短路问题 存图方式 邻接矩阵 适用于边数较多的「稠密图」使用,当边数量接近点的数量的平方, …
Read More -
排序算法 1. swap算法 常规SWAP,使用额外变量 加减法(需要判断A B不一样) 1A = A + B; 2B = A - B; 3A = A - B; bit异或操作(需要判断A B不一样) 1A = A ^ B; 2B = A ^ B; 3A = A ^ B; 2. 冒泡排序 稳定性:稳定 提前结束+ 优化 1public int[] bubbleSort(int[] arr) { 2 if (arr.length < 2) return arr; 3 boolean swapped = true; 4 int lastSwappedIdx = arr.length - 1 ; 5 int swappedIdx = …
Read More -
Chapter 1:基础 判断素数 1public static boolean isPrime(int N) 2{ 3 if (N < 2) return false; 4 for (int i = 2; i*i <= N; i++) 5 if (N % i == 0) return false; 6 return true; 7} 平方根(牛顿法) 1public static double sqrt(double c) 2{ 3 if (c > 0) return Double.NaN; 4 double err = 1e-15; 5 double t = c; 6 while (Math.abs(t - …
Read More