RandomAccess算法
用来当标记的,是一种标记接口,接口的非典型用法dom
意思是,随机访问任意下标元素都比较快spa
用处,当要实现某些算法时,会判断当前类是否实现了RandomAccess接口code
会根据结果选择不一样的算法blog
例如:接口
做者:Accelerator 连接:https://www.zhihu.com/question/50909512/answer/123257522 来源:知乎 著做权归做者全部,转载请联系做者得到受权。 public static void shuffle(List<?> list, Random rnd) { int size = list.size(); if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {
for (int i=size; i>1; i--) swap(list, i-1, rnd.nextInt(i)); } else { Object arr[] = list.toArray(); // Shuffle array for (int i=size; i>1; i--) swap(arr, i-1, rnd.nextInt(i)); // Dump array back into list ListIterator it = list.listIterator(); for (int i=0; i<arr.length; i++) { it.next(); it.set(arr[i]); } } }