直奔主题。我相信这是很容易解决的,但不知何故我被卡住了。我有一个从主类调用的类上传器。这个类流式传输一个带有学生列表的txt文件并将其打印出来。但是,我找不到一个解决方案,如何将这个txt文件存储在ArrayList中,并在其他类中使用。文件是基于学生类排序的,它覆盖toString方法以获得打印输出。我尝试使用collect(collectors.toList())方法,但没有奏效。我想我错过了一些明显的东西。有谁能提点什么吗?多谢了。
下面是我为学生类编写的代码:
public class Student extends People {
private String collegeName;
private String studentType;
private final String studentID;
public Student(String firstName, String secondName, String telNo, String collegeName, String studentID, String studentType ) {
super(firstName, secondName, telNo);
this.studentID = studentID;
this.collegeName = collegeName;
this.studentType = studentType;
}
public String getStudentI() {
String studentDet = getPeople() + collegeName + " " + studentType + " Student";
return studentDet;
}
@Override
public String toString() {
return "Student [name= " + firstName + ", second Name= " + secondName + " Telephone number= " + telNo + "college name= " + collegeName + " Student ID " + studentID + " Student Type= " + studentType + "]";
}
public class Uploader {
private String fileName = null;
private void getPath() {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f = chooser.getSelectedFile();
setFileName(f.getAbsolutePath());
System.out.println(getFileName());
}
void Uploader() {
getPath();
Path path = Paths.get(getFileName());
try (Stream<String> lines = Files.lines(path)) {
lines
.flatMap(Uploader::lineToPerson)
.forEach(System.out::println);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public static Stream<Student> lineToPerson(String line) {
try {
String[] elements = line.split(",");
String firstName = elements[0];
String secondName = elements[1];
String telNo = elements[2];
String collegeName = elements[3];
String studentID = elements[4];
String studentType = elements[5];
Student p = new Student(firstName, secondName, telNo, collegeName, studentID, studentType);
return Stream.of(p);
} catch (Exception e) {
}
return Stream.empty();
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}
这里不需要使用flatMap()。简单的映射转换可以用来将line转换为Student对象,并将它们收集到一个列表中。
List<Person> personList = new ArrayList();
try (Stream<String> lines = Files.lines(path)) {
personList = lines
.map(this::lineToPerson)
.collect(Collectors.toList());
} catch (IOException ioe) {
ioe.printStackTrace();
}
public Student lineToPerson(String line) {
String[] elements = line.split(",");
String firstName = elements[0];
String secondName = elements[1];
String telNo = elements[2];
String collegeName = elements[3];
String studentID = elements[4];
String studentType = elements[5];
return new Student(firstName, secondName, telNo, collegeName, studentID, studentType);
}
问题内容: 假设我有一个对象,带有一些不错的方法: 将这个流写入文件 的 最短/最优雅的解决方案是 什么,每个流元素一行? 对于读取来说,有一个不错的方法,因此我认为必须有一种对称的方法可以写入文件,但是找不到。 只需要一个迭代。 问题答案: 也许最短的方法是使用与沿招其转换为: 例如: 如果看起来过于骇客,请使用更明确的方法: 如果您有一些自定义对象流,则始终可以添加步骤以应用该方法。
我有一个带有字符串的数组列表,我想在日期中转换它。在下面的代码中,似乎不能使用“parse”来完成此操作: 但那不起作用。 你能帮帮我吗?
我想知道你如何从一个文本文件中获取信息,并将其写入单独的数组列表中。 如你所见,上面有哺乳动物、鸟类和鱼类的群体!所以我将这些数组列表声明为。 目标是将人类、狗、老鼠和猫的字符串对象写入mammalList。然后将鸟写到鸟列表,将鱼写到鱼列表。 我知道如何使用缓冲读取器读取单个数组列表中的文本文件,但我不知道如何将每个动物分为各自的类别。非常感谢你的帮助! 下面是在Freestyle 076的帮助
问题内容: 我正在用Java编写一个程序,该程序显示了一系列课后俱乐部(例如,EG Football,曲棍球-由用户输入)。俱乐部被添加到以下: 通过以下方法: ‘Club’是一个带有构造函数的类-名称: 我的程序正在运行-它使我可以将新的Club对象添加到我的数组列表中,可以查看该数组列表,还可以删除所需的任何内容,等等。 但是,我现在想将该arrayList(俱乐部)保存到文件中,然后我希望以
我有一个包含这类内容的文件: AccountNumber=1000,BranchName='11',Balance=420,CustomerNumber=1 线程“main”java.io.StreamcorreptedException:无效的流头:6163636f在java.io.objectinPutStream.ReadStreamHeader(ObjectInPutStream.java