[英]Java, sort and display data from txt file
我是Java的新手,在完成一項任務時遇到了一些麻煩。 我有看起來像這樣的txt文件:
John Doe,01-01-1980,Development,Senior Developer
Susan Smith,07-12-1983,Development,Head of Development
Ane Key,06-06-1989,BA,Junior Analyst
Nina Simone,21-09-1979,BA,Head of BA
Tom Popa,23-02-1982,Development,Developer
Tyrion Lannyster,17-03-1988,BA,Analyst
我想按部門分類。 例如:成員是:
[Employee Full Name] - [Employee Age] - [Employee Position] - [Employee Salary(default value x)]
部門:發展部成員:Susan Smith ...... John Doe……Tom Popa……部門:BA成員:Nina Simone ....... Ane Key ... ........ Tyrion Lannyster ........
最初讀取文件並制作2D數組,但無法繼續如何正確對其進行排序。
public static void main(String[] args) {
String csvFile = "C:\\Employees.txt";
BufferedReader br = null;
String line = "";
String SplitBy = ",";
String myArray[][] = new String[6][5];
int row = 0;
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String nums[] = line.split(SplitBy);
for (int col = 0; col < nums.length; col++){
String n =nums[col];
myArray[row][col] = n;
// System.out.println(n);
}
row++;
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Java Collections API允許您以及util.Arrays進行排序。 您將需要用於代碼的arrays方法,但請考慮移至某種Collection。 也許從列表開始。
最簡單的方法是將行的內容放入Java Bean中,然后使用sort對其進行排序。
public User {
private String name;
// ... all the fields with getters and setters
}
然后將您的代碼修改為如下所示:
// create a nice List for the users.
List<User> userList = new ArrayList<>();
while ((line = br.readLine()) != null) {
User user = new User();
String nums[] = line.split(SplitBy);
user.setName(nums[0]);
// create nice method to convert String to Date
user.setDate(convertStringToDate(nums[1]));
// add the user to the list
userList.add(user);
}
// Then finally sort the data according to the desired field.
Arrays.sort(userList, (a,b) -> a.name.compareTo(b.name));
在此處提供代碼解決方案不會幫助您學習。 但我可以給您提示如何進行。 確實不建議使用數組。
簡單但骯臟的方式-
代替二維數組,請使用TreeMap<String, String[]>
,其中key是與名稱連接的部門,value是個人詳細信息的一維數組。 當我們使用TreeMap
,結果自然地根據Department后面跟人的名字進行排序。 遍歷entrySet
並打印所有結果。
正確的路 -
用所需的所有成員定義新對象Person
。 實現Comparable
接口。 讀取所有輸入數據,在Person
對象中填充相同的數據,在ArrayList
添加每個此類對象,然后使用Collections API的sort方法對所有對象進行排序。 另外,您可以采用Comparator
方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.