package com.itjingsong.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* @author jingsong
* @date 2022/6/6 23:28
* @desc 介绍一下 ArrayList实现的一个类 RandomAccess
*/
public class RandomAccessTest {
public static void main(String[] args) {
/*
1. RandomAccess类作为一个标记的作用
RandomAccess 随机接近,实现这个类说明该类可以随机访问集合的每个元素
用(obj instanceof RandomAccess)来判断该集合需要使用
① for循环遍历
② 迭代器遍历
*/
/*
2. 举例
① ArrayList实现了RandomAccess,使用for循环遍历更快
② LinkedList 未实现RandomAccess,使用迭代器遍历
*/
ArrayList<Integer> arrayList = new ArrayList<>();
addData(arrayList);
LinkedList<Integer> linkedList = new LinkedList<>();
addData(linkedList);
visitAnyOne(arrayList);
visitAnyOne(linkedList);
/*
3. 并非集合类实现RandomAccess就会遍历速度变快,而是该集合本质访问速度很快
*/
/*
4. 参考
http://t.csdn.cn/DOvMG
*/
}
@SuppressWarnings("all")
private static void visitAnyOne(List<Integer> list) {
long l1 = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
list.get(i);
}
long e1 = System.currentTimeMillis();
System.out.println(list.getClass()+"\tfor\t"+(e1-l1));
long l2 = System.currentTimeMillis();
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer next = iterator.next();
}
long e2 = System.currentTimeMillis();
System.out.println(list.getClass()+"\titerator\t"+(e2-l2));
}
private static void addData(List<Integer> list) {
for (int i = 0; i < 100000; i++) {
list.add(i);
}
}
}
utils015_RandomAccess类简介
最新推荐文章于 2025-05-07 13:38:15 发布