Re: [問題] 請問如何將正規表示法用在 HashMap.get()
※ 引述《tkcn.bbs@ptt.cc (小安)》之銘言:
> ※ 引述《Nt1 (用功點吧!)》之銘言:
> : 請問一下,若我有一個 HashMap,裡面有:
> : key value
> : a
> : b
> : xax
> : ax
> : xa
> : 請問有什麼辨法可以將 key 中有包含 a 的(a, xax, ax, xa) 的value 都找出來呢?
> : 謝謝。
> 以 hash 來說,恐怕是沒辦法完成你要的功能
> 如果是我解這個問題,大概會用 26 個 ArrayList 分別代表 a~z
> 每加入一個字串,例如 hello
> 就將代表 h,e,l,o 的 ArrayList 加入 "hello"
> 但題目還有些細節不太確定,所以實際的寫法還要再修改修改
這樣也不錯 :P
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
public class RegexUtil {
public static List<String> findSetWithRegex(Map<?, ?> m, String regex) {
List<String> l = new ArrayList<String>();
Set s = m.keySet();
Iterator it = s.iterator();
Pattern p = Pattern.compile(regex);
while (it.hasNext()) {
String k = it.next().toString();
System.out.println(k);
if (p.matcher(k).matches()) {
l.add(k);
}
}
return l;
}
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("a", "1");
hm.put("b", "2");
hm.put("xax", "3");
hm.put("ax", "4");
hm.put("xa", "5");
HashMap<Integer, String> hm2 = new HashMap<Integer, String>();
hm2.put(new Integer(6434), "1fd");
hm2.put(new Integer(3423), "dfa2");
hm2.put(new Integer(873), "d3sd");
List l = RegexUtil.findSetWithRegex(hm, "^a.*");
List l2 = RegexUtil.findSetWithRegex(hm2, ".*34.*");
System.out.println(l.size());
System.out.println(l2.size());
}
}
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 163.26.34.20
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章