测试HashMap代码:
-
importjava.util.HashMap;
-
importjava.util.Map;
-
-
-
publicclassTest{
-
-
publicstaticvoidmain(String[]args){
-
Map<String,String>map=newHashMap<String,String>();
-
map.put(String.valueOf(System.nanoTime())+"a","1");
-
map.put(String.valueOf(System.currentTimeMillis())+"a","2");
-
map.put(String.valueOf(System.currentTimeMillis())+"a","3");
-
for(Map.Entry<String,String>entry:map.entrySet()){
- System.out.printf(entry.getValue());
- }
- }
- }
如果对HashMap的原理有所了解的话应该会考虑到结果是不确定的,因为"1","2","3"三个串的顺序是无法确定的.
对于HashMap重点要掌握其存储数据的方式.HashMap内部有一个transient Entry[] table;这个数组是实际用来存储数据的.需要注意的是Entry是个链式结构,后面可以链接多个Entry.table数组在构造方法中初始化,默认大小是16.
加入数据通过put方法实现.put中首先对对象的hashCode()结果进行再hash等一些列处理,得到一个index,这个index就是此对象应该存储的位置,如果table[index]中已经存在了一个要加入的对象,或者和要加入的对象equals的对象,则用新对象替换原有的对象.如果不存在,则在此位置加入该对象( 放在链表的头上) .
hash处理的过程比较麻烦,这里把代码抽取出来测试了一下:
-
-
-
-
publicclassTest{
-
-
publicstaticvoidmain(String[]args){
-
Stringstr1=System.nanoTime()+"a";
-
Stringstr2=System.nanoTime()+"a";
-
Stringstr3=System.nanoTime()+"a";
-
inti1=str1.hashCode();
-
inti2=str2.hashCode();
-
inti3=str3.hashCode();
-
inthash1=hash(i1);
-
inthash2=hash(i2);
-
inthash3=hash(i3);
-
intindex1=indexFor(hash1,16);
-
intindex2=indexFor(hash2,16);
-
intindex3=indexFor(hash3,16);
- System.out.println(index1);
- System.out.println(index2);
- System.out.println(index3);
- }
-
-
privatestaticinthash(inth){
-
h+=~(h<<9);
-
h^=(h>>>14);
-
h+=(h<<4);
-
h^=(h>>>10);
-
returnh;
- }
-
-
staticintindexFor(inth,intlength){
-
returnh&(length-1);
- }
- }
把上面的例子多跑几次看看结果,就知道第一个例子中的原理了.
ps:自己的语言表达能力越来越差了,不知道该怎么搞.
分享到:
相关推荐
hashmap dfa关键字替换。 附上main测试明细结果,替换时间 ok ok ok ok 。
本测试查找方法使用Map的get方法,循环、离散获取。对于ConcurrentSkipListMap,获得顺序片段,可用subMap()方法,提取50w的子序列只需要1ms,具有巨大优势。 SkipListMap的范围查询效率比HashMap和TreeMap效率都要...
哈希映射线程测试使用 Maven 构建和运行 mvn exec:java
资源介绍:。1、此HashMap类采用java jdk中HashMap的实现方式。...(注意:请编译后测试效率,由于大量内存操作,编译后效率约为调试时的100倍以上。)。资源作者:。fangzhiguo。资源界面:。资源下载:。
hashmapTest 来自java-performance.info的HashMap性能测试
含HashMap, byte数组,String其它的类似。 测试环境 eclipse 3.4 mingw 5.16 注意加上链接参数g++ -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at cdt 5 jdk 5
O(1) 上) 最差上) 上) 上) ## Runnable Java命令行功能: 编译HashMap: javac PrimitiveHashMap.java 编译测试: javac PrimitiveHashMapTest.java 运行HashMap: java PrimitiveHashMap 运行测试:...
HashMap和LinkedHashMap 描述 该项目提供了可在Node.js和浏览器上运行的HashMap和LinkedHashMap类。 它们都是像一样的简化实现 ... 值得进行基准测试,以查看Map在这些情况下是否对您更好。 安装 使用 :
StringToHashMap:根据一组规则将字符串转换为hashmap。 快速创建。 添加了单元测试和UI测试
Scala中的基本HashMap实现 应对KPCB奖学金 依存关系 brew install sbt # on Mac 跑步 sbt run 测试 sbt test
3、优化了键值生成器方法,并做了高并发性能测试; 4、添加了一组字段值累加累减方法; 5、简化了db.xml配置文件,并兼容1.x版; 升级后的JadePool3.0高并发性做了充分的测试,得到了充分的验证。 JadePool3.0除了...
1、此HashMap类采用java jdk中HashMap的实现方式 2、相比网站上发布过的hashtable之类的源码: 此HashMap寻址方法是...(注意:请编译后测试效率,由于大量内存操作,编译后效率约为调试时的100倍以上。) fangzhiguo
根据Java面向对象吃货联盟项目修改为通过HashMap存储菜品和订单(其实ArrayList更简单) 实现的功能:订餐,查看餐袋,签收订单,删除订单,我要点赞,退出系统 定义的类:菜品类、订单类、测试类(可以把里面实现的...
1) // increase counter...count := atomic.LoadInt64(counter) // read counter基准测试以线程安全的方式从哈希映射中进行读取的速度几乎与以不安全的方式从标准Golang映射中进行读取的速度相同,是Go的sync.Map的...
Java中常用Map测试示例 包含 Map HashMap EnumMap等等
要运行测试: $ npm test 动机 有时您需要的不只是一个简单的HashMap 当苍蝇拍会起作用时,切勿使用a弹枪 如果您需要一个简单的HashMap来完成工作,我邀请您来学习 ,我代码的关键哈希部分受他的工作启发。
要运行测试: $ npm test 描述 该项目提供了一个既可在Node.js上又可在浏览器上使用的HashMap类。 HashMap实例存储键/值对,允许任何类型的键。 与常规对象不同,键不会被字符串化。 例如,数字和字符串不会混合...
软件测试笔试题,1) 简述对Vector类的理解,并写出常用到的对向量的增、删、插、定位及获取长度的方法。 答:增-add、差-insert 定位-find 2) 作用域public,protected,private,以及不写时的区别 答:public是所有都...
1. 测试ArrayList类的方法: package RongQI.Collection; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * 测试Collection接口中的方法 */ public class TestArraylist {...