Java 如何按名称显示输出
我必须从一个二进制文件中读取,然后我应该按名称顺序显示输出 问题是: 编写一个从二进制文件person.dat读取数据的程序。(请从网站下载二进制文件。)然后,按姓名升序显示姓名、年龄和性别(M–男性,F–女性) 二进制文件的结构如下所示: intVariable TotalNumberofRecord StringVariable名称IntVariable年龄CharVariable性别 StringVariable名称IntVariable年龄CharVariable性别 这是二进制文件(person.dat)中的内容 艾娃·穆罕默德·阿里·姆斯蒂·努雷尼F谭美宽F 穆图·萨米·阿尔文·坦姆 ============================================ 这是我制作的代码。问题是我不知道如何按字母顺序对输出进行排序。请帮我做这个,谢谢Java 如何按名称显示输出,java,Java,我必须从一个二进制文件中读取,然后我应该按名称顺序显示输出 问题是: 编写一个从二进制文件person.dat读取数据的程序。(请从网站下载二进制文件。)然后,按姓名升序显示姓名、年龄和性别(M–男性,F–女性) 二进制文件的结构如下所示: intVariable TotalNumberofRecord StringVariable名称IntVariable年龄CharVariable性别 StringVariable名称IntVariable年龄CharVariable性别 这是二进制文件(
try {
ObjectInputStream inputStream = new ObjectInputStream (new FileInputStream("C:/Users/user/Desktop/person.dat"));
String input;
int age, record;
char gender;
record = inputStream.readInt();
System.out.println("Total number of records: "+record);
try{
while(true) {
input = inputStream.readUTF();
age = inputStream.readInt();
gender = inputStream.readChar();
System.out.println(input+" " +age +" " +gender);}
}catch(EOFException e){}
inputStream.close();
} catch (FileNotFoundException e) {
System.out.println("File was not found");
} catch (IOException e) {
System.out.println("Problem with file output.");
}
要对数据进行排序,必须首先将数据放入集合(如
ArrayList
),对其进行排序,然后输出
在将数据放入集合之前,应该创建一个类
,将数据保存在一起。它应该是一个非常简单的类,只接受构造函数中的名称、年龄和性别
要对类的实例进行排序,请使类实现接口。.compareTo
方法只能调用被比较名称的相同方法
我希望这足以理解您其余的课堂讲稿。为了补充9000的建议,我可以创建一个
Person
类,作为要添加到可排序Java集合(即列表、集合等)的记录
假设您选择了列表
,您可以执行以下操作:
List<Person> records = new ArrayList<Person>();
records.add(new Person("Joe", 41, M));
records.add(new Person("Anne", 23, F));
records.add(new Person("Walter", 18, M));
...
为了确保如何正确地实现这一点,我建议在Oracle Java网站上查看本Java教程。您可能需要三种类型的比较器
:名称比较器
,年龄比较器
,以及性别比较器
。这样,您就可以按姓名、年龄或性别对记录进行排序。或者,更好的是,你可以把它们结合起来,这样你就可以按名字和年龄来分类;比如说
List<Person> records = new ArrayList<Person>();
records.add(new Person("Joe", 41, M));
records.add(new Person("Anne", 23, F));
records.add(new Person("Walter", 18, M));
...
Collections.sort(list, new Comparator<Integer>()
{
public int compare(Integer age1, Integer age2) {
return (age1 > age2 ? -1 : (age1 == age2 ? 0 : 1));
}
});