在 \t [Java] 之后的单词之后按字母顺序对 String arrayList 进行排序
Sorting String arrayList alphabetically after word that comes after \t [Java]
我在记事本中创建了一个图书库,如下所示:
Author | Name of the book | Availability? | Readers Code | Return Date
----------------------------------------------------------------------------
J. K. Rowling Harry Potter Yes - -
Mark Sullivan The Black Book Yes - -
Margaret Atwood Rogue Yes - -
我需要按书名的字母顺序对其进行排序。
单词使用 \t 分隔。
我该怎么做?
This is the code that adds new books :
try (BufferedWriter bw = new BufferedWriter(
new FileWriter("C:/Users/Name/Desktop/library.txt", true))) {
System.out.print("Enter authors name\t");
name = sc.nextLine();
name = sc.nextLine();
author[l] = name;
System.out.print("Enter books name\t");
name = sc.nextLine();
bookname[l] = name;
vaiBib[l] = "Yes";
BilNr[l] = "-";
AtgDat[l] = "-";
l++;
if ((author[l- 1] != null) && (bookname[l- 1] != null)) {
content = bookname[l- 1] + "\t\t" + author[l- 1] + "\t\t" + vaiBib[l- 1]
+ "\t\t\t" + BilNr[l- 1] + "\t\t" + AtgDat[l- 1];
bw.write(content);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
然后使用此代码,我从记事本中的行创建链接列表:
BufferedReader br = new BufferedReader(new FileReader("C:/Users/Name/Desktop/library.txt"));
ArrayList<String> Line2= new ArrayList<>();
while ((line = br.readLine()) != null) {
Line2.add(line);
}
如果可以使用Java 8:
Line2.sort(Comparator.comparing(s -> s.substring(s.indexOf('\t') + 1)));
在早期的 Java 版本中,您需要编写 Comparator
class,您可以在 Internet 上找到大量示例和教程。通过采用 s.substring(s.indexOf('\t') + 1))
来比较第一个制表符之后的字符串部分的基本思想仍然有效,您只需要为要比较的两个字符串中的每一个都这样做。
我在记事本中创建了一个图书库,如下所示:
Author | Name of the book | Availability? | Readers Code | Return Date
----------------------------------------------------------------------------
J. K. Rowling Harry Potter Yes - -
Mark Sullivan The Black Book Yes - -
Margaret Atwood Rogue Yes - -
我需要按书名的字母顺序对其进行排序。 单词使用 \t 分隔。 我该怎么做?
This is the code that adds new books :
try (BufferedWriter bw = new BufferedWriter(
new FileWriter("C:/Users/Name/Desktop/library.txt", true))) {
System.out.print("Enter authors name\t");
name = sc.nextLine();
name = sc.nextLine();
author[l] = name;
System.out.print("Enter books name\t");
name = sc.nextLine();
bookname[l] = name;
vaiBib[l] = "Yes";
BilNr[l] = "-";
AtgDat[l] = "-";
l++;
if ((author[l- 1] != null) && (bookname[l- 1] != null)) {
content = bookname[l- 1] + "\t\t" + author[l- 1] + "\t\t" + vaiBib[l- 1]
+ "\t\t\t" + BilNr[l- 1] + "\t\t" + AtgDat[l- 1];
bw.write(content);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
然后使用此代码,我从记事本中的行创建链接列表:
BufferedReader br = new BufferedReader(new FileReader("C:/Users/Name/Desktop/library.txt"));
ArrayList<String> Line2= new ArrayList<>();
while ((line = br.readLine()) != null) {
Line2.add(line);
}
如果可以使用Java 8:
Line2.sort(Comparator.comparing(s -> s.substring(s.indexOf('\t') + 1)));
在早期的 Java 版本中,您需要编写 Comparator
class,您可以在 Internet 上找到大量示例和教程。通过采用 s.substring(s.indexOf('\t') + 1))
来比较第一个制表符之后的字符串部分的基本思想仍然有效,您只需要为要比较的两个字符串中的每一个都这样做。