首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

经过KEY模糊搜索MAP取值

2012-11-09 
通过KEY模糊搜索MAP取值public class LikeHashMap extends HashMap {?public Set keySet() {??Set set s

通过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);
    }
}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long time = System.currentTimeMillis();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(mh.get("A", true).size());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(System.currentTimeMillis() - time);
&nbsp;&nbsp;&nbsp; }
}




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

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

热点排行