探究ArrayList 和Map 的读取和插入效率

前段时间遇到这个问题,当时不知道答案,昨天实验了一下,记录一下。

建了一个Java程序,所以首先看看 Main 方法:

public final static int i = (int) (0.5 * 10000);
public static Long startTime = (long) 0;
public static int tag = 0;

static ArrayList<Integer> longArray = new ArrayList<Integer>();
static Map<Integer, Integer> longMap = new HashMap<Integer, Integer>();

/**
 * @param args
 */
public static void main(String[] args) {

    putData();
    getData();

}

再看看 putData() 、 getData() 两个方法:

public static void putData() {
    // ArrayList 插入
    tag = i;
    startTime = System.currentTimeMillis();
    for (; tag > 0; tag--) {
        longArray.add(tag);
    }
    System.out.println(" longArray time "
            + (System.currentTimeMillis() - startTime) + " == "
            + longArray.size());

    // Map 插入
    tag = i;
    startTime = System.currentTimeMillis();
    for (; tag > 0; tag--) {
        longMap.put(tag, tag);
    }
    System.out.println(" longMap time "
            + (System.currentTimeMillis() - startTime) + " == "
            + longMap.size());
}

public static void getData() {
    // ArrayList 读取
    startTime = System.currentTimeMillis();
    for (Integer flag1 : longArray) {
    }
    System.out.println(" longArray time "
            + (System.currentTimeMillis() - startTime) + " == "
            + longArray.size());

    // Map 读取
    startTime = System.currentTimeMillis();
    for (Entry<Integer, Integer> flag2 : longMap.entrySet()) {
    }
    System.out.println(" longMap time "
            + (System.currentTimeMillis() - startTime) + " == "
            + longMap.size());
}

下面看看不同数据量的时候,他们各自的表现:

// 1 * 10000
longArray time 2 == 10000
longMap time 5 == 10000
longArray time 3 == 10000
longMap time 1 == 10000

// 10 * 10000
longArray time 8 == 100000
longMap time 16 == 100000
longArray time 9 == 100000
longMap time 6 == 100000

// 50 * 10000
 longArray time 17 == 500000
 longMap time 65 == 500000
 longArray time 14 == 500000
 longMap time 15 == 500000

// 100 * 10000
 longArray time 21 == 1000000
 longMap time 117 == 1000000
 longArray time 16 == 1000000
 longMap time 18 == 1000000

// 1000 * 10000
 longArray time 5185 == 10000000
 longMap time 7687 == 10000000
 longArray time 39 == 10000000
 longMap time 115 == 10000000

从上面的数据可以推出 插入速度ArrayList 表现的比 Map更快,
在读取方面数据量比较小的时候Map 和 ArrayList 的表现相差不大(100 * 10000),数量级比较大的时候ArrayList 表现的比Map 更快。

如有错误,欢迎指正!

email : 704084109@qq.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值