import java.util.*; class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); String line; List<String> list = new ArrayList<>(); List<String> set = new ArrayList<>(); List<String> put=new ArrayList<>(); while(!( line =in.nextLine()).equals("end")){ String[] l = line.split(" "); for(String s:l){ list.add(s); } } for(String l:list){ if(!set.contains(l)){ set.add(l); } } for(String s:set){ int n =0; for(String l:list){ if(s.equals(l)){ n++; } } put.add(s+" "+n); } Collections.sort(put, new Comparator<String>() { @Override public int compare(String o1, String o2) { String[] arr1 = o1.split(" "); String[] arr2 = o2.split(" "); int s1 = Integer.parseInt(arr1[1]); int s2 = Integer.parseInt(arr2[1]); int f = s2-s1; if(s1==s2){ // 若出勤次数相同则按输入顺序输出 int index1 = put.indexOf(o1); int index2 = put.indexOf(o2); f = index1 - index2; } return f; } }); put.forEach(System.out::println); // put.forEach(System.out::println); } }j降重
时间: 2024-02-10 13:15:27 浏览: 130
java代码-import java.util.Scanner;
这段代码是一个 Java 程序,用于统计输入中每个单词出现的次数,并按照出现次数将单词排序输出。程序的具体实现如下:
1. 导入 java.util 包,以使用 List 和 Scanner 类。
```
import java.util.*;
```
2. 创建一个公共的类 Main,其中包含一个公共的静态方法 main。
```
class Main{
public static void main(String[] args){
// 程序代码
}
}
```
3. 创建一个 Scanner 对象 in,用于从标准输入读取数据。
```
Scanner in = new Scanner(System.in);
```
4. 创建三个 ArrayList 对象 list、set 和 put,分别用于存储输入的单词、去重后的单词和统计后的结果。
```
List<String> list = new ArrayList<>();
List<String> set = new ArrayList<>();
List<String> put = new ArrayList<>();
```
5. 使用 while 循环读取输入的数据,将每个单词存储到 list 中。
```
while(!(line = in.nextLine()).equals("end")){
String[] l = line.split(" ");
for(String s:l){
list.add(s);
}
}
```
6. 使用 for 循环遍历 list,将不重复的单词存储到 set 中。
```
for(String l:list){
if(!set.contains(l)){
set.add(l);
}
}
```
7. 使用另一个 for 循环遍历 set,统计每个单词在 list 中出现的次数,并将结果存储到 put 中。
```
for(String s:set){
int n = 0;
for(String l:list){
if(s.equals(l)){
n++;
}
}
put.add(s + " " + n);
}
```
8. 使用 Collections.sort 方法对 put 进行排序,排序规则是先按照单词出现次数从大到小排序,若出现次数相同,则按照单词在输入中的顺序排序。
```
Collections.sort(put, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] arr1 = o1.split(" ");
String[] arr2 = o2.split(" ");
int s1 = Integer.parseInt(arr1[1]);
int s2 = Integer.parseInt(arr2[1]);
int f = s2 - s1;
if(s1 == s2){
int index1 = put.indexOf(o1);
int index2 = put.indexOf(o2);
f = index1 - index2;
}
return f;
}
});
```
9. 使用 forEach 方法遍历 put,将结果输出到标准输出。
```
put.forEach(System.out::println);
```
阅读全文