把Set单值类型的集合扩张成Map对值类型的集合
2010-12-24 14:13
204 查看
代码如下:
通过1000万次速度测试:每生成1万个元素,平均需要69毫秒。package otherTests; import java.util.Date; import java.util.HashSet; import java.util.Iterator; class Set2Map extends HashSet{ private static final long serialVersionUID = 1L; private HashSet set; private int length; private Element e; Set2Map(){ set = new HashSet(); length = 0; } /* * 说明Set集合中保留的是对象内存的应用,而不是另外复制一份对象的内存 */ public void put(String key,String value){ e = new Element(); e.setKey(key); e.setValue(value); set.add(e); length++; } public String toString(){ if(length==0){ return null; }else{ String print = "[ "; Iterator it = set.iterator(); while(it.hasNext()){ Element l = (Element)it.next(); print += l.getKey()+"="+l.getValue()+" "; } print += "]"; return print; } } class Element{ private String key; private String value; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } public static void main(String[] args) { int aveg = 0,times=40,testNum = 250000; for(int k=0,j=0;k<times;k++){ Set2Map s = new Set2Map(); long d0 = new Date().getTime(),fromTo = 0,d = 0; double avg = 0; for(int i=1;i<testNum;i++){ s.put(""+i, ""+i); if(i%10000==0){ d = new Date().getTime(); fromTo = d-d0; d0 = d; avg += fromTo/(testNum/10000.0); } } System.out.println("第"+(++j)+"次生成"+testNum+"个元素,每1万个平均耗时avg(毫秒) : "+(int)avg); aveg += avg; } System.out.println("【测试结束,总生成"+(testNum*times/10000.0)+"万个元素,每1万个平均耗时"+aveg/times+"毫秒】"); } }
使用JAVA自带的HashMap测试:每生成1万个元素,平均需要56毫秒。
package otherTests; import java.util.Date; import java.util.HashMap; import java.util.HashSet; public class MyMap{ private int length; public void put(String name,int age){ HashSet set ; } public static void main(String []args){ int aveg = 0,times=40,testNum = 250000; for(int k=0,j=0;k<times;k++){ HashMap s = new HashMap(); long d0 = new Date().getTime(),fromTo = 0,d = 0; double avg = 0; for(int i=1;i<testNum;i++){ s.put(""+i, ""+i); if(i%10000==0){ d = new Date().getTime(); fromTo = d-d0; d0 = d; avg += fromTo/(testNum/10000.0); } } System.out.println("第"+(++j)+"次生成"+testNum+"个元素,每1万个平均耗时avg(毫秒) : "+(int)avg); aveg += avg; } System.out.println("【测试结束,总生成"+(testNum*times/10000.0)+"万个元素,每1万个平均耗时"+aveg/times+"毫秒】"); } } class UserBean{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
相关文章推荐
- hibernate第二天——值类型的集合(set,map,list,bag,sort,order-by),实体类型集合,关联关系,3l类型Long,inverse,级联
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Java list、map、set、vector集合类型中的null值
- Hibernate之映射集合(值类型的set,bag,idbag,list和map)
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- python学习六:异常处理、map/reduce/filter内置函数、python集合(set)类型、元组转列表
- Java集合三种类型:Set<集>、List<列表>、Map<映射>
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- java集合中List、Map、Set的区别
- 第十九节,基本数据类型,集合set
- 集合总结(List、Map、Set)
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- 集合set/map/list/vector 的总结
- Python集合(set)类型的操作
- Java基本概念:集合类(Collection)List/Set/Map... 的区别和联系
- Python集合(set)类型的操作
- Java集合Set、List、Map的遍历方法
- Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
- JAVA 集合List,数组,Set,Map,直接的相互转换