java 板


LINE

今天晚上很無聊,寫點程式好了。 我恨String.subString(),那是個效能殺手,所以,特意寫了 個不用subString()的版本。 二小時KO,一次寫成沒有Bug,看來寫JAVA越來越熟練了。 執行環境:JDK5.0。 用了稍微過份的Templete語法,所以還不熟Templete的看倌請加油。 ____________________________<<以下為程式碼>>______________________________ import java.util.HashSet; import java.util.TreeMap; /** * * @author Ian * */ public class TextChecker { public static final String[] TEST_PATTERN = { "abstract", "do","implements", "protected", "throws", "boolean", "double", "import", "public", "transient", "break", "else", "instanceof", "return","true", "byte", "extends", "int", "short","try", "case", "false","interface", "static", "void", "catch", "final", "long","strictfp", "volatile", "char", "finally","native", "super","while", "class", "float", "new", "switch", "const", "for", "null", "synchronized", "continue", "goto", "package", "this" }; public static final PatternContainer container = new PatternContainer(TEST_PATTERN); /** * * @param args */ public static void main(String[] args) { String input = "absd eqwerstatictyuiotryp lkjhgfdsazxcvbn " + "voidabstract "; char[] charArr = input.toCharArray(); HashSet<Keyword> set; for(int i=0,j=charArr.length;i<j;i++) { if((set = container.getPattern(charArr[i])) != null) { for(Keyword keyword :set) if(keyword.isMatch(charArr,i)) System.out.println( "Find keyword \""+keyword+"\" at position["+i+"]"); } } } } /** * @author Ian */ class PatternContainer { protected TreeMap<Character,HashSet<Keyword>> PatternMap = new TreeMap<Character, HashSet<Keyword>>(); /** * * @param patterns */ public PatternContainer(String[] patterns) { for (int i = 0, j = patterns.length; i < j; i++) AddPattern(patterns[i]); } /** * * @param pattern */ public void AddPattern(String pattern) { HashSet<Keyword> set; Keyword keyword; char first = pattern.charAt(0); if (pattern.length() != 0) { if (PatternMap.containsKey(first)) set = PatternMap.get(first); else PatternMap.put( first, set = new HashSet<Keyword>()); keyword = new Keyword(pattern); if (!set.contains(keyword)) set.add(keyword); } } /** * * @param key * @return */ public HashSet<Keyword> getPattern(char key) { return PatternMap.get(key); } } /** * @author Ian */ class Keyword { private char first; private char[] arr; private String keyword; /** * * @param word */ public Keyword(String keyword) { this.keyword = keyword; arr = keyword.toCharArray(); if (arr.length > 0) first = arr[0]; } /** * */ public String toString() { return keyword; } /** * * @return */ public char getFirst() { return first; } /** * * @param input * @return */ public boolean isMatch(char[] input, int offset) { if(input.length-offset<arr.length)return false; for (int i = 0, j = arr.length; i < j; i++) if (input[offset + i] != arr[i]) return false; return true; } /** * */ public boolean equals(Object obj) { if (obj.getClass() == this.getClass()) { Keyword key = (Keyword) obj; return key.isMatch(this.arr, 0); } return false; } } ___________________________<<以上為程式碼>>____________________________ 稍微包裝、修改一下就可以用啦,已經很晚了,就不詳細說明拉。 -- --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.85.116.116 ※ 編輯: zanyking 來自: 210.85.116.116 (04/10 01:26)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP