import java.util.HashMap;
import java.util.LinkedList;
import java.util.TreeMap;
import java.util.UUID;
public class Demo1 {
public static void main(String[] args) {
/**
* 性能比较
*/
String[] arr = new String[100000];
LinkedList<String> list = new LinkedList<>();
TreeMap<Integer, String> tree=new TreeMap<>();
HashMap<Integer, String> map =new HashMap<>();
for(int i=0; i<arr.length; i++){
String str = UUID.randomUUID().toString();
arr[i] = str;
list.add(str);
tree.put(i, str);
map.put(i, str);
}
//查找中部位置数据
int index = arr.length/2;
long t1 = System.nanoTime();
String s1 = arr[index];
long t2 = System.nanoTime();
String s2 = list.get(index);
long t3 = System.nanoTime();
String s3 = tree.get(index);
long t4 = System.nanoTime();
String s4 = map.get(index);
long t5 = System.nanoTime();
System.out.println("arr:"+(t2-t1));
System.out.println("list:"+(t3-t2));
System.out.println("tree:"+(t4-t3));
System.out.println("map:"+(t5-t4));
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
/**
* 结果说明:
* 1. 根据下标序号查找元素, 数组最快
* 2. 根据key查找value HashMap最快
* 3. ArrayList内部封装的是数组, 其性能比数组略慢
* 根据下标查找元素的性能很好
* ArrayList的尾部追加快, 头部插入慢
* ArrayList是综合性能最好的数据结构!
* 4. LinkedList 内部是双向链表, 头尾查找(操作)性能好,
* 中部操作性能最惨, 不用使用LinkedList查找!
* LinkedList用于头尾频繁操作的情况.
*
*/
}
}