问题描述
如题了,请问一下这个2干嘛的?有他没有他有啥不同?
解决方案
解决方案二:
HashMappublicHashMap(intinitialCapacity)构造一个带指定初始容量和默认加载因子(0.75)的空HashMap。参数:initialCapacity-初始容量。抛出:IllegalArgumentException-如果初始容量为负。
解决方案三:
publicstaticMap<String,ERPOrgCorp>toCorpMap(List<ERPOrgCorp>list,booleanneedSeal,Object...isDisplay){这个省略号是怎么回事?我很菜,是大菜鸟
解决方案四:
Object...isDisplay可变参数,参数数量不确定时,可以使用Object...isDisplay来表示。楼主搜一下,java可变参数
解决方案五:
解决方案六:
/***Constructsanempty<tt>HashMap</tt>withthespecifiedinitial*capacityandthedefaultloadfactor(0.75).**@paraminitialCapacitytheinitialcapacity.*@throwsIllegalArgumentExceptioniftheinitialcapacityisnegative.*/publicHashMap(intinitialCapacity){this(initialCapacity,DEFAULT_LOAD_FACTOR);}
initialCapacitytheinitialcapacity.里面Entry数组的初始空间开辟大小
解决方案七:
HashMap(intinitialCapacity)构造一个带指定初始容量和默认加载因子(0.75)的空HashMap。
解决方案八:
引用2楼u010175788的回复:
publicstaticMap<String,ERPOrgCorp>toCorpMap(List<ERPOrgCorp>list,booleanneedSeal,Object...isDisplay){这个省略号是怎么回事?我很菜,是大菜鸟
java的可变参数,从JDK1.5开始有的,你可以传0至多个参数
解决方案九:
看看api吧。
解决方案十:
加载因子越高空间利用率提高了但是查询时间和添加时间增加hashmap是这样存的先利用hashcode找到需要存的地方但是存的地方肯定是有限的就是hashMap分配到的空间比如是10现在你第一个元素来了那么他会根据你hashcode%10得到你在10个位置中该存到哪里这个时候就有一个问题,就是,如果hashcode%10找到存的地方当你要存进去时候你发现里面已经有另外一个对象了,那么这时候就要调用equals方法进行比较,如果相同,就说明是一个相同的对象。就替换掉。如果不同,那么就形成散列桶,就是2个对象一起,不过有先后,后进来的在后面。hashmap查询对象,要的是效率,直接通过hashcode找到存放的地址,直接取出,只需一次。但是像我们前面说的这种情况,是会让操作数增加的,你找到了hashcode所对应的物理地址,发现里面有2个对象,这时就不能确定那个是你要找的,那么就要通过equals和你传入的key进行比对,相同则返回。前面的讲述已经发现当你空间只有仅仅为10的时候是很容易造成,2个对象的hashcode所对应的地址是一个位置的情况这样就造成2个对象会形成散列桶,使查询和插入的时间增加。这时就有一个加载因子的参数,如果加载因子为0.75,如果你hashmap的空间有100那么当你插入了75个元素的时候hashmap就需要扩容了,不然的话会形成很长散列桶,对于查询和插入都会增加时间,因为他要一个一个的equals。但是你又不能让加载因子很小,0.01这样是不合适的,因为他会大大消耗你的内存,你一加入一个对象hashmap就扩容。这时就存在着一个平衡,,jdk中默认是0.75可以根据自己的实际情况进行调整希望能帮助你
解决方案十一:
引用9楼qq840727854的回复:
加载因子越高空间利用率提高了但是查询时间和添加时间增加hashmap是这样存的先利用hashcode找到需要存的地方但是存的地方肯定是有限的就是hashMap分配到的空间比如是10现在你第一个元素来了那么他会根据你hashcode%10得到你在10个位置中该存到哪里这个时候就有一个问题,就是,如果hashcode%10找到存的地方当你要存进去时候你发现里面已经有另外一个对象了,那么这时候就要调用equals方法进行比较,如果相同,就说明是一个相同的对象。就替换掉。如果不同,那么就形成散列桶,就是2个对象一起,不过有先后,后进来的在后面。hashmap查询对象,要的是效率,直接通过hashcode找到存放的地址,直接取出,只需一次。但是像我们前面说的这种情况,是会让操作数增加的,你找到了hashcode所对应的物理地址,发现里面有2个对象,这时就不能确定那个是你要找的,那么就要通过equals和你传入的key进行比对,相同则返回。前面的讲述已经发现当你空间只有仅仅为10的时候是很容易造成,2个对象的hashcode所对应的地址是一个位置的情况这样就造成2个对象会形成散列桶,使查询和插入的时间增加。这时就有一个加载因子的参数,如果加载因子为0.75,如果你hashmap的空间有100那么当你插入了75个元素的时候hashmap就需要扩容了,不然的话会形成很长散列桶,对于查询和插入都会增加时间,因为他要一个一个的equals。但是你又不能让加载因子很小,0.01这样是不合适的,因为他会大大消耗你的内存,你一加入一个对象hashmap就扩容。这时就存在着一个平衡,,jdk中默认是0.75可以根据自己的实际情况进行调整希望能帮助你
写的很认真,赞。不过有个细节需要纠正下,“那么这时候就要调用equals方法进行比较”之前由于||的短路性质会先比较hashcode是否相同(这就是为什么覆写equals方法时推荐重写hashcode方法,不然使用某些集合,如set时会出错)。
解决方案十二:
引用10楼sum_rain的回复:
Quote: 引用9楼qq840727854的回复:
加载因子越高空间利用率提高了但是查询时间和添加时间增加hashmap是这样存的先利用hashcode找到需要存的地方但是存的地方肯定是有限的就是hashMap分配到的空间比如是10现在你第一个元素来了那么他会根据你hashcode%10得到你在10个位置中该存到哪里这个时候就有一个问题,就是,如果hashcode%10找到存的地方当你要存进去时候你发现里面已经有另外一个对象了,那么这时候就要调用equals方法进行比较,如果相同,就说明是一个相同的对象。就替换掉。如果不同,那么就形成散列桶,就是2个对象一起,不过有先后,后进来的在后面。hashmap查询对象,要的是效率,直接通过hashcode找到存放的地址,直接取出,只需一次。但是像我们前面说的这种情况,是会让操作数增加的,你找到了hashcode所对应的物理地址,发现里面有2个对象,这时就不能确定那个是你要找的,那么就要通过equals和你传入的key进行比对,相同则返回。前面的讲述已经发现当你空间只有仅仅为10的时候是很容易造成,2个对象的hashcode所对应的地址是一个位置的情况这样就造成2个对象会形成散列桶,使查询和插入的时间增加。这时就有一个加载因子的参数,如果加载因子为0.75,如果你hashmap的空间有100那么当你插入了75个元素的时候hashmap就需要扩容了,不然的话会形成很长散列桶,对于查询和插入都会增加时间,因为他要一个一个的equals。但是你又不能让加载因子很小,0.01这样是不合适的,因为他会大大消耗你的内存,你一加入一个对象hashmap就扩容。这时就存在着一个平衡,,jdk中默认是0.75可以根据自己的实际情况进行调整希望能帮助你写的很认真,赞。不过有个细节需要纠正下,“那么这时候就要调用equals方法进行比较”之前由于||的短路性质会先比较hashcode是否相同(这就是为什么覆写equals方法时推荐重写hashcode方法,不然使用某些集合,如set时会出错)。
对的因为前面有提到是先通过hashcode找到物理内存地址所以后面没有提看的非常认真
解决方案十三:
在线api:tools.oschina.net参考
解决方案十四:
解决方案十五:
建议楼主下个JavaAPI帮助文档自己看,这种东西文档生写得很清楚。