字符串排序方法
方法一:使用stream流
public static void withArraysAPI() throws IOException {
// read and store strings in an array from input stream
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] ss = new String[n];
for (int i = 0; i < n; i++) {
ss[i] = br.readLine();
}
br.close();
// use stream to sort and output strings, which may use more time
Arrays.stream(ss).sorted().forEach(System.out::println);//关键方法
// alternatively, use Arrays.sort(Object[] a) and for loop to output, which may use less time
}
方法二:PriorityQueue的offer()方法和poll()
PriorityQueue会根据元素的排序顺序决定出队的优先级。
// 方法二: 使用PriorityQueue
public static void withPriorityQueue() throws IOException {
// read and store strings in a priority queue from input stream
PriorityQueue<String> pq = new PriorityQueue<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine(); // read the first line, but the number will not be used.
String s;
while ((s = br.readLine()) != null) {
pq.offer(s);
}
br.close();
// output
while (!pq.isEmpty()) {
System.out.println(pq.poll());
}
}