分享
 
 
 

Java单词计数器

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

花了一个中午搞定了一个单词计数器,可以按照字典和频率两种排序,功能还比较强大。

package treeroot.util;

//anthor treeroot

//since 2004-12-3

public class Word{

private String value;

public Word(String value){

this.value=value.toLowerCase();

}

private int count=1;

protected void increase(){

count++;

}

public String getWord(){

return value;

}

public int getCount(){

return count;

}

public boolean equals(Object o){

return (o instanceof Word)&&(((Word)o).value.equals(value));

}

public int hashCode(){

return value.hashCode();

}

}

package treeroot.util;

//author treeroot

//since 2004-12-3

import java.util.*;

public class WordCount

{

private static class WordSet implements Set{

private Map map=new HashMap();

public int size(){

return map.size();

}

public boolean isEmpty(){

return map.isEmpty();

}

public boolean contains(Object o){

return map.containsKey(o);

}

public Iterator iterator(){

return map.keySet().iterator();

}

public Object[] toArray(){

return map.keySet().toArray();

}

public Object[] toArray(Object[] a){

return map.keySet().toArray(a);

}

public boolean add(Object o){

if(map.containsKey(o)){

((Word)map.get(o)).increase();

}

else {

map.put(o,o);

}

return true;

}

public boolean remove(Object o){

return false;

}

public boolean addAll(Collection c){

return false;

}

public boolean removeAll(Collection c){

return false;

}

public boolean retainAll(Collection c){

return false;

}

public boolean containsAll(Collection c){

return map.keySet().containsAll(c);

}

public void clear(){}

public boolean equals(Object c){

return map.keySet().equals(c);

}

public int hashCode(){

return map.keySet().hashCode();

}

}

public static Set getWordCount(String s,Comparator order){

Set set=new WordSet();

String split1="[^a-zA-Z\\-_']+";

String split2="[^a-zA-Z]+[\\-_'][^a-zA-Z]*";

String split3="[^a-zA-Z]*[\\-_'][^a-zA-Z]+";

String regex = "("+split2+")|("+split3+")|("+split1+")";

String[] words = s.split(regex);

for(int i=0;i<words.length;i++){

set.add(new Word(words[i]));

}

Set sort=new TreeSet(order);

sort.addAll(set);

return Collections.synchronizedSet(sort);

}

public static Comparator DICTIONARY_ORDER=new Comparator(){

public int compare(Object o1,Object o2){

Word w1=(Word)o1;

Word w2=(Word)o2;

return w1.getWord().compareTo(w2.getWord());

}

};

public static Comparator FREQUENCY_ORDER =new Comparator(){

public int compare(Object o1,Object o2){

Word w1=(Word)o1;

Word w2=(Word)o2;

int i=w2.getCount()-w1.getCount();

if(i==0){

return w1.getWord().compareTo(w2.getWord());

}

return i;

}

};

public static void main(String[] args)

{

String s="A regular expression, specified as a string, must first be compiled into an instance of this class. The resulting pattern can then be used to create a Matcher object that can match arbitrary character sequences against the regular expression. All of the state involved in performing a match resides in the matcher, so many matchers can share the same pattern. ";

Set set=WordCount.getWordCount(s,WordCount.FREQUENCY_ORDER);

for(Iterator it=set.iterator();it.hasNext();){

Word w=(Word)it.next();

int i=4-w.getWord().length()/8;

String tab="";

for(int j=0;j<i;j++)

tab+="\t";

System.out.println(w.getWord()+tab+w.getCount());

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有