读书人

经过KEY模糊搜索MAP取值

发布时间: 2012-11-09 10:18:48 作者: rapoo

通过KEY模糊搜索MAP取值

public class LikeHashMap extends HashMap {

?public Set keySet() {
??Set set = super.keySet();
??TreeSet tSet = null;
??if (set != null) {
???// 对已存在的key进行排序
???tSet = new TreeSet(set);
??}
??return tSet;
?}

?public List<Object> get(String key,boolean like) {
??List<Object> value = new ArrayList<Object>();
??//是否为模糊搜索
??if(like){
???List<String> keyList = new ArrayList<String>();
???TreeSet<String> treeSet = (TreeSet) this.keySet();
???for (String string : treeSet) {
????//通过排序后,key是有序的.
????if (string.indexOf(key) != -1) {
?????keyList.add(string);
?????value.add(this.get(string));
????} else if (string.indexOf(key) == -1 && keyList.size() == 0) {
?????//当不包含这个key时而且key.size()等于0时,说明还没找到对应的key的开始
?????continue;
????} else {
?????//当不包含这个key时而且key.size()大于0时,说明对应的key到当前这个key已经结束.不必要在往下找
?????break;
????}
???}
???keyList.clear();
???keyList=null;
??}else{
???value.add(this.get(key));
??}
??return value;
?}

?public static void main(String[] args) {
??LikeHashMap hMap = new LikeHashMap();
??for (int i = 0; i < 100000; i++) {
???hMap.put("A_"+i, "AAAAAA"+i);
??}
??long time=System.currentTimeMillis();
??System.out.println(hMap.get("A",true).size());
??System.out.println(System.currentTimeMillis()-time);
?}

}

}
long time = System.currentTimeMillis();
System.out.println(mh.get("A", true).size());
System.out.println(System.currentTimeMillis() - time);
}
}
        }
        long time = System.currentTimeMillis();
        System.out.println(mh.get("A", true).size());
        System.out.println(System.currentTimeMillis() - time);
    }
}




呵呵,我在现在公司用的机子上跑你们两的程序,
楼主的耗时1437, 你的耗时765.

公司的机子还在原始社会呀.

读书人网 >软件架构设计

热点推荐