代码:
import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import jeasy.analysis.MMAnalyzer; /** * 此次测试使用的是Lucene2.2 * @author 李晗 * */ public class Test { public static void main(String[] args) { String text = "看了我爸爸就心情不好,我快得忧郁病了。说说我爸爸的一些事吧,也许从一两件简单的生活琐事,你会觉得我太计较,但是你不知道,每天都有几个意想不到的”惊喜“给你,你的心情真的可以经受考验吗?我实在受不了了。也许你们会觉得我很不孝顺,但是没有经历过的人不会明白 周日回家,发现厨房有袋泰国香米,觉得奇怪,米还有很多呢,怎么又买了一袋呢。本想不问,可还是忍不住,问在客厅里盯着电视一动不动的爸爸,“怎么买了一袋米呢?”他赶紧从沙发上起身,说“是啊,我也不知道怎么会有袋米,有个野拿来的,我以为是你叫人送上来的‘ 接着他走到餐柜上拿了一张小票看。我在脑海里快速搜索,难道是W,有时老公会让他帮忙买米,但是这次不对啊,老公出差了,而且家里还有很多米,况且每次让他帮忙买都是我们自己拿回家的。结论:肯定是别人送错了。本想不管了,反正米是要吃的,就留着吃吧,赶紧到厨房做饭了,顺手拿来小票看了一眼,哗,100元,这么贵,再看看是楼下超市,还有电话。太贵了,我们家一般吃东北大米。马上打电话让他们来拿回去。真是的,拿不准,就不会打个电话问吗?顺便说一下,连打个电话都懒。 昨天中午买了烧腊外卖带回家,回家比较晚了,配了有几小袋的酱汁和烧鹅酱,撕开倒在小碟子上,几个小空袋(比方便面的味包小一半),就放在了打开的一次性饭盒盖上。时间晚了,没有把食物空出来放在自家的碟子上。没吃完,剩一半,可以留晚上吃。吃完赶紧去上班,爸爸收拾洗碗。晚上回家,赶紧做菜,把桌上中午吃剩的烧鹅饭盒直接放进微波炉加热,完了开饭,打开饭盒,一开,天呐,那几个空的酱油袋好好地呆在烧鹅上面呢。我的天啊,忍,忍不住,我说,爸爸,怎么这些空的酱油袋还放在里面不扔掉呢?他在看电视,好象楞了一下,说:恩,我以为你还要嘛” 。大多数时候,我已经修炼得不会继续说话的了,因为说多一句,他都会生气,或者和我争吵,认为我很挑剔,容不下他。但是这次我忍不住了,我说;都空的还会有什么用?“ 。我的语气都是很平和的。可是心里真的是不开心。他这个人真的很蠢,而且做什么事情都是非常随便,不用脑的,其实有些事情根本就不需要用脑,很简单的事,可是他经常都会让你大吃一惊,气堵胸口。 林林总总,对着这样的一个人,我真的觉得他没死我就会先死,虽然他是我爸爸,可是他的很多不良习惯我真的很难忍受。 碰到这样的父母,做子女的该怎么办呢?媒体,报纸,天天说子女要理解父母,孝顺父母,多陪父母.......我都挺晕的,很多时候你想跟他们说话,可是无话可说,各种习惯又合不来......怎么不说说父母也应该进步,提高自我,不要把自己和子女,和社会的差距拉得太大呢? 我的想法是,父母应该要孝顺,但是不一定要同住,否则大家都痛苦。敬而远之,大家关系还好些,心情也好些"; MMAnalyzer analyzer = new MMAnalyzer(); Map<String,Integer> map = new HashMap<String,Integer>(); try { String[] str = analyzer.segment(text, " ").split(" "); System.out.println("词数:"+str.length); for(int i=0;i<str.length;i++){ String temp = str[i]; int tempCount=0; for(int j=0;j<str.length;j++){ if(temp.equals(str[j])) tempCount++; } map.put(temp, tempCount); } } catch (IOException e) { e.printStackTrace(); } System.out.println("map size:"+map.size()); Set<Entry<String, Integer>> set = map.entrySet(); Iterator<Entry<String, Integer>> itor = set.iterator(); while(itor.hasNext()) { Entry<String, Integer> entry = itor.next(); if(1==entry.getValue()) itor.remove(); } List<Map.Entry<String, Integer>> list = sortMap(map); //排序后 for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i).getKey()+"、"); } System.out.println(); for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } } //排序包含分词的Map public static List<Map.Entry<String, Integer>> sortMap(Map<String,Integer> map){ List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); for(int i=0;i<infoIds.size();i++){ if(infoIds.get(i).getKey().length()==1){//去除单个字 infoIds.remove(i); } } //排序 Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return (o2.getValue() - o1.getValue()); //return (o1.getKey()).toString().compareTo(o2.getKey()); } }); return infoIds; } }
运行结果:
词数:486
map size:338
说、爸爸、父母、真的、怎么、觉得、但是、小、赶紧、回家、饭盒、让他、子女、烧鹅、电话、就、很多、心情、忍不住、买了、一半、拿来、好些、厨房、天、而且、可是他、帮忙、吃完、一袋、用脑、说话、是你、晚上、可是、看了、都会、酱油、这样、碟子、可以、电视、也许、几个、一下、打开、都是、空的、不会、没有、这次、还有、放在、本想、孝顺、简单、大家、自己、晚了、时候、
说=7
爸爸=6
父母=5
真的=4
怎么=4
觉得=4
但是=4
小=4
赶紧=4
回家=4
饭盒=3
让他=3
子女=3
烧鹅=3
电话=3
就=3
很多=3
心情=3
忍不住=3
买了=3
一半=2
拿来=2
好些=2
厨房=2
天=2
而且=2
可是他=2
帮忙=2
吃完=2
一袋=2
用脑=2
说话=2
是你=2
晚上=2
可是=2
看了=2
都会=2
酱油=2
这样=2
碟子=2
可以=2
电视=2
也许=2
几个=2
一下=2
打开=2
都是=2
空的=2
不会=2
没有=2
这次=2
还有=2
放在=2
本想=2
孝顺=2
简单=2
大家=2
自己=2
晚了=2
时候=2