forked from nibnait/algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMapTest.java
More file actions
81 lines (74 loc) · 3.17 KB
/
MapTest.java
File metadata and controls
81 lines (74 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package zzzTest;
import org.apache.commons.collections4.CollectionUtils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
public class MapTest {
public static void main(String[] args) throws Exception {
Solution();
}
public static void Solution() throws Exception {
String deskPath = "/Users/nibnait/Desktop/";
Map<Integer, String> textMap = new HashMap<>();//行号、文字
Map<Integer, ArrayList<Integer>> lineNumberMap = new TreeMap<>();//数字、行号
ArrayList<Integer> sortedLineNumberList = new ArrayList<>();
BufferedReader bufferedReader = null;
StringBuilder text = new StringBuilder();
String tempString = null;
int lineNo = 1;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
bufferedReader = new BufferedReader(new FileReader(deskPath+"in.txt"));
// 一次读入一行,直到读入null为文件结束
while ((tempString = bufferedReader.readLine()) != null) {
System.out.println("lineNo " + lineNo + ": " + tempString);
textMap.put(lineNo, tempString);
StringBuilder sb = new StringBuilder();
char[] chars = tempString.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (Character.isDigit(chars[i])) {
sb.append(chars[i]);
}
}
int number = Integer.valueOf(sb.toString());
ArrayList<Integer> numberList = lineNumberMap.get(number);
if (CollectionUtils.isNotEmpty(numberList)) {
numberList.add(lineNo);
lineNumberMap.put(number, numberList);
} else {
ArrayList<Integer> list = new ArrayList<>();
list.add(lineNo);
lineNumberMap.put(number, list);
}
lineNo++;
}
TreeMap<Integer, ArrayList<Integer>> treeMap = new TreeMap<>(lineNumberMap);
for (Map.Entry<Integer, ArrayList<Integer>> entry : treeMap.entrySet()) {
// System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
ArrayList<Integer> arrayList = entry.getValue();
for (Integer j : arrayList) {
text.append(textMap.get(j) + "\n");
}
}
bufferedReader.close();
//写文件
Path filePath = Paths.get(deskPath+"out.txt");
// FileOutputStream fileOutputStream = new FileOutputStream(text.toString());
// Files.createFile(filePath);
Files.write(filePath, text.toString().getBytes());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e1) {
}
}
}
}
}