我是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)]
部门:发展 成员是: 苏珊史密斯...... 约翰·多伊...... 汤姆波帕...... 系:文学士 成员是: 尼娜西蒙娜....... 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();
}
}
}
}
答案 0 :(得分:0)
Java Collections API允许您排序以及util.Arrays。 您将需要代码的数组方法,但考虑转移到某种类型的Collection。也许是一个开始的列表。
答案 1 :(得分:0)
最简单的方法是将行内容放在Java Bean中,然后使用sort对它们进行排序。
{{1}}
然后将代码修改为:
{{1}}
答案 2 :(得分:0)
在这里提供代码解决方案无助于您学习它。但我可以给你提示如何继续。不建议使用数组。
简单但又脏的方式 -
使用TreeMap<String, String[]>
而不是二维数组,其中key是与name连接的部门,value是个人详细信息的一维数组。当我们使用TreeMap
时,结果会根据部门和人员名称自然排序。循环浏览entrySet
并打印所有结果。
正确的方式 -
使用所有需要的成员定义新对象Person
。实现Comparable
接口。读取所有输入数据,在Person
对象中填充相同内容,在ArrayList
中添加每个此类对象,并使用Collections API的排序方法对所有对象进行排序。或者,您可以调整Comparator
方式。