在http://wangxuliangboy.iteye.com/blog/291268上看到模糊搜索HashMap的代码,本着学习的态度自己进行了改写,希望wangxuliangboy不要介意,呵呵,代码如下:
package cn.xbmu.lib.jfly.test;
import java.util.*;
/**
* 模糊搜索HashMap
* @author JFly
*/
public class MyLikeHashMap<K, V> extends HashMap<K, V> {
public List<V> get(String key, boolean like) {
List<V> list = null;
if (like) {
list = new ArrayList<V>();
K[] a = null;
Set<K> set = this.keySet();
a = (K[])set.toArray();
//Arrays.sort(a, null);
// 如果不注释掉上面一句,大致运行时间为187,注释后为47
// 说明数组的排序消耗还是比较大的,能不用最好不用
for (int i = 0; i < a.length; i++) {
if (a[i].toString().indexOf(key) == -1) {
continue;
} else {
list.add(this.get(a[i]));
}
}
// J2SE5.0后的foreach写法
/*****************************************
for (K k : a) {
if (k.toString().indexOf(key) == -1) {
continue;
} else {
list.add(this.get(k));
}
}
*******************************************/
}
return list;
}
public static void main(String[] args) {
MyLikeHashMap<String, String> mh = new MyLikeHashMap<String, String>();
for (int i = 0; i < 100000; i++) {
mh.put("A_" + i, "AAAAAA" + i);
}
long time = System.currentTimeMillis();
System.out.println(mh.get("A", true).size());
System.out.println(System.currentTimeMillis() - time);
}
}