您的位置:首页 > 其它

把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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐