Re: [問題] 請問如何將正規表示法用在 HashMap.get()

看板java作者時間19年前 (2006/12/20 09:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《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
文章代碼(AID): #15Y8jE00 (java)
文章代碼(AID): #15Y8jE00 (java)