Skip to content

Commit d579fab

Browse files
committed
在线编程-排序打印关键字
1 parent 05b1025 commit d579fab

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
[根据输入的若干个关键字,在一个日志文件中按出现的次数排序打印输入的关键字](https://blog.csdn.net/Abysscarry/article/details/80891128)
2+
3+
```java
4+
package Other.interview;
5+
6+
import java.io.BufferedReader;
7+
import java.io.File;
8+
import java.io.FileReader;
9+
import java.io.IOException;
10+
import java.util.Arrays;
11+
import java.util.HashMap;
12+
import java.util.Map;
13+
import java.util.Scanner;
14+
import java.util.stream.Collectors;
15+
16+
public class LogKeywords {
17+
public static void main(String[] args) throws IOException {
18+
File logFile = new File("/Users/tianyiwang/Downloads/JavaTest/resource/sys_info.log");
19+
BufferedReader logFileReader = new BufferedReader(new FileReader(logFile));
20+
System.out.println("请输入关键字:(以空格为间隔,并且关键词不能包含`符号)");
21+
Scanner scanner = new Scanner(System.in);
22+
String input = scanner.nextLine();
23+
String[] keywords = input.split(" ");
24+
25+
Map<String, Integer> keywordToCountMap = new HashMap<>();
26+
27+
String line;
28+
while ((line = logFileReader.readLine()) != null) {
29+
for (String keyword : keywords) {
30+
String[] split = line.split(keyword);
31+
System.out.println(Arrays.toString(split));
32+
int count = split.length - 1;
33+
// 如果有关键字在一行字符串的最后,那么split方法将少返回一个数组
34+
if (line.endsWith(keyword)) {
35+
count++;
36+
}
37+
if (keywordToCountMap.containsKey(keyword)) {
38+
keywordToCountMap.put(keyword, keywordToCountMap.get(keyword) + count);
39+
} else {
40+
keywordToCountMap.put(keyword, count);
41+
}
42+
}
43+
}
44+
45+
if (!keywordToCountMap.isEmpty()) {
46+
System.out.println(keywordToCountMap
47+
.entrySet()
48+
.stream()
49+
.sorted(Map.Entry.comparingByValue())
50+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
51+
} else {
52+
System.out.println("无匹配");
53+
}
54+
}
55+
}
56+
57+
```

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ PS:除开知识点,一定要准备好以下内容:
3939
* [连续子数组最大和](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/在线编程-连续子数组最大和.md)
4040
* [快速排序](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/在线编程-快速排序.md)
4141
* [交替打印奇偶数](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/在线编程-交替打印奇偶数.md)
42+
* [排序打印关键字](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/在线编程-排序打印关键字.md)
4243
### Linux
4344
* [Linux命令](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/Linux.md)
4445
### 项目举例
4546
* [秒杀架构](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/秒杀架构.md)
4647
* [搜索引擎](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/搜索引擎.md)
47-
## 其他面试问题
48+
### 其他面试问题
4849
* [从按下回车开始,到浏览器呈现出网页之间的发生了什么](http://www.wangtianyi.top/blog/2017/10/22/cong-urlkai-shi-,ding-wei-shi-jie/)
4950
* [问题排查](https://github.com/xbox1994/2018-Java-Interview/blob/master/MD/问题排查.md)

0 commit comments

Comments
 (0)