7-1 单词统计与排序 (25 分)
从键盘录入一段英文文本(句子之间的标点符号只包括“,”或“.”,单词之间、单词与标点之间都以" "分割。 要求:按照每个单词的长度由高到低输出各个单词(重复单词只输出一次),如果单词长度相同,则按照单词的首字母顺序(不区分大小写,首字母相同的比较第二个字母,以此类推)升序输出。
输入格式:
一段英文文本。
输出格式:
按照题目要求输出的各个单词(每个单词一行)。
输入样例:
Hello, I am a student from China.
输出样例:
student
China
Hello
from
am
a
I
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine().replaceAll("[,.]", "");
String[] strr = str.split(" ");
TreeMap<String, Integer> tMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
for (String s : strr) {
tMap.put(s, s.length());
// System.out.println(s);
}
List<Map.Entry<String, Integer>> tList = new ArrayList<>(tMap.entrySet());
tList.sort((o1, o2) -> -(o1.getValue() - o2.getValue()));
Iterator<Map.Entry<String, Integer>> iter = tList.iterator();
for(int i=0;i<tList.size();i++) {
Map.Entry<String, Integer> entry = iter.next();
System.out.println(entry.getKey());
}
}
}