HashMap随机取值和迭代器取值的对比

一共四中方法,前两种是迭代器取值,后两种是随机取值,循环了5000万次,时间分别为:迭代器读取的速度大约是随机读取的速度的1.5倍,数据量越大,差距越明显。

另外,插入是读取的100倍左右的时间(这个判定只是个大概参考)。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco }

48138(插入)

403(迭代器读取)

400(迭代器读取)

653(随机读取)

561(随机读取)

package main;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class test {
	public static void main(String[] args) {
		 int mapCount = 50000000;
		 String tmp = "";

		 Map<Integer,String> testMap = new HashMap<>();
		 String testValue = "";
		 Long startTime0 = System.currentTimeMillis();
		 for(int i = 1;i<mapCount;i++){
			 tmp = testMap.put(i, testValue);
		 }
		 Long endTime0 = System.currentTimeMillis();
		 System.out.println(endTime0-startTime0);

		 Long startTime1 = System.currentTimeMillis();
		 for(Entry<Integer,String> entry : testMap.entrySet()){
			 tmp = entry.getValue();
		 }
		 Long endTime1 = System.currentTimeMillis();
		 System.out.println(endTime1-startTime1);

		 Long startTime2 = System.currentTimeMillis();
		 Iterator<Entry<Integer, String>> it = testMap.entrySet().iterator();
		 while(it.hasNext()){
			 tmp = it.next().getValue();
		 }
		 Long endTime2 = System.currentTimeMillis();
		 System.out.println(endTime2-startTime2);

		 Long startTime3 = System.currentTimeMillis();
		 for(Integer i : testMap.keySet()){
			 tmp = testMap.get(i);
		 }
		 Long endTime3 = System.currentTimeMillis();
		 System.out.println(endTime3-startTime3);

		 Long startTime4 = System.currentTimeMillis();
		 for(Entry<Integer,String> entry : testMap.entrySet()){
			 tmp = testMap.get(entry.getKey());
		 }
		 Long endTime4 = System.currentTimeMillis();
		 System.out.println(endTime4-startTime4);

	}
}

  

时间: 2024-10-05 09:15:07

HashMap随机取值和迭代器取值的对比的相关文章

Jquery操作select,左右移动,双击移动 取到所有option的值

$(function () { function MoveItem(fromId, toId) { $("#" + fromId + " option:selected").each(function () { $(this).appendTo($("#" + toId + ":not(:has(option[value=" + $(this).val() + "]))")); }); $("#&

不知道你们遇到没遇到这种情况,谈谈ng-if/ng-repeat产生子作用域,ng-model取不到相应的值

不知道你们遇到没遇到这种情况,谈谈ng-if/ng-repeat产生子作用域,ng-model取不到相应的值,这个问题是怎么产生的呢?,因为他们都各级产生了一个子作用域. ng-repeat demo ng-repeat经常是用来解析一个数组,将值赋值到一个list中 具体的$parent主要应用在重名的情况下 <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <m

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关 获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $("select[@name=items] option[@selected]").text();select下拉框的第二个元素为当前选中值$('#select_id'

数据库sql联合查询mid类型的分页数据取不了全部的值错误

USE [Travel]GO/****** Object:  StoredProcedure [dbo].[NoticeGetPagedData]    Script Date: 06/13/2014 20:44:51 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[NoticeGetPagedData]@pageIndex int = 1,--页码@pageSize int =10,--页容量

WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}

DisplayMemberPath 是用来显示下拉列表的值 SelectedValuePath是用来取得选中项的值. ComboBox绑定类对象, 下拉列显示的值,与取到的值 string. Join的作用 输出结果是

dojo-获取下拉框的值和文本

1.问题背景 这里有一个下拉框,其中选项为一年四季,选中后打印下拉框的值和文本 2.实现源码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>dojo-获取下拉框的值和文本</title> <link rel="stylesheet" href="js/dojo/dijit/themes/claro/cl

jQuery radio取值,checkbox取值,select取值

语法解释: 1 $("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发 2 var checkText=$("#select_id").find("option:selected").text();  //获取Select选择的Text 3 var checkValue=$("#select_id").val();  //获取Selec

easyui 》 radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中

获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $("select[@name=items] option[@selected]").text();select下拉框的第二个元素为当前选中值$('#select_id')[0].selectedIndex = 1;radio单选组的第二个元素为当前选中值$('input[@name=items]').g

jquery取选中的checkbox的值

一.   在html的checkbox里,选中的话会有属性checked="checked". 如果用一个checkbox被选中,alert这个checkbox的属性"checked"的值alert($"#xxx".attr("checked")),会打印出"true",而不是"checked"! 如果没被选中,打印出的是"undefined".觉得很奇怪是吗?继续看