Java 统计单词个数并按照出现次数进行排序

请改一下这个程序或者给一个新的publicvoidshowCoding(){setTitle("Find");setBounds(745,125,280,600);set... 请改一下这个程序 或者给一个新的
public void showCoding() {
setTitle("Find");
setBounds(745,125,280,600);
setVisible(true);
String text = ta.getText();
// String s = JOptionPane.showInputDialog(null, "请输入句子:");
String[] ss = text.trim().split(" ");
Map map = new HashMap();
for (int i = 0; i < ss.length; i++) {
int count = 0;
for (int j = 0; j < ss.length; j++) {
if (ss[i].equals(ss[j])) {
count = count + 1;
}
}//为了不打印重复的,放入map中去掉重复的
map.put(ss[i], count);
}
//遍历map,打印包含的单词和个数
Set key=map.keySet();
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
String count2=map.get(name).toString();
lFind.setText(name+":"+count2+"\r\n");
// System.out.println(name+"有"+count2+" 个");

}
}
展开
 我来答
陈学阳
2010-10-13 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5633万
展开全部
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "I am a student";
String[] arr = str.split(" ");
System.out.println("共"+arr.length+"个单词");
for(String item:arr) System.out.println(item);
}

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
匿名用户
推荐于2017-09-08
展开全部
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Set;

import javax.swing.JOptionPane;

public class CharacterCount {
public static void main(String[] args) {
//获取输入文字列
String input = JOptionPane.showInputDialog("Please input character!");

while (null == input || "".equals(input.trim())) {
JOptionPane.showMessageDialog(null, "Please input character!");
input = JOptionPane.showInputDialog("Please input character!");
}
//取出单词
String[] ary = input.split("\\s+");

List<String> list = new ArrayList<String>();
for ( String str : ary ) {
//取出的单词数组中提出标点符号
if ( !str.matches("\\W+") ) {
list.add(str);
}
}
//创建集合对象,将链表存入集合对象,自动删除重复单词,此时集合的size就是剔除重复后的单词个数
Set<String> set = new HashSet<String>(list);
//创建映射对象,以单词出现次数为key,单词内容为value存储
Map<Integer, String> map = new HashMap<Integer, String>();
for ( String str : set ) {
int count = 0;
while (true) {
int index = list.indexOf(str);
if ( index >= 0 ) {
count++;
list.remove(index);
} else {
break;
}
}
//key在map中已经存在时用空格将单词分隔
if ( null == map.get(new Integer(count)) ) {
map.put(new Integer(count), str);
} else {
String value = map.get(new Integer(count));
map.put(new Integer(count), str + " " + value);
}
}
//按照出现次数升序
sort(map,true);
//按照出现次数降序
sort(map,false);
}

/**
* 排序用方法.
* @param map 待排序容器对象
* @param sortType 排序种别,true表示升序,false表示降序
*/
public static void sort( Map<Integer, String> map, boolean sortType ) {
List<String> list = new ArrayList<String>();
//创建优先队列用于排序
Queue<Integer> queue = new PriorityQueue<Integer>(map.keySet());

String[] ary;
while ( queue.size() != 0 ) {
Integer integer = queue.poll();
if ( !sortType ) {
ary = map.get(integer).split(" ");
for ( String str : ary ) {
list.add(0, str + "有" + integer + " 个" );
}
} else {
ary = map.get(integer).split(" ");
for ( String str : ary ) {
list.add(str + "有" + integer + " 个");
}
}
}
System.out.println(list);

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式