关于arr 、list、tree、map的性能比较

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用于头尾频繁操作的情况.
             *
             */
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值