java - 从文件中获取输入并将其放入集合中,Java
问题描述
在我的任务中,我需要将 Car 类存储到 setOfCars 中。必须从文件中读取。我有 id、nameOfCar、noOfSeats。
输入:
1
梅赛德斯
GTR 2
主要我有这个:
Set<Car> listOfCars= eneterCars();
但是intellij将其转换为:
Set<Cars> listOfCars= (Set<Car>) eneterCars();
这不起作用。
我调用的方法也是主要的:
File cars= new File("dat/cars.txt");
try(FileReader fileReader = new FileReader(cars);
BufferedReader reader = new BufferedReader(fileReader)){
String readLine;
List<Car> listOfCars= new ArrayList<>();
while((readLine= reader.readLine()) != null){
Long id = Long.parseLong(readLine);
String name= reader.readLine();
Integer noOfSeats=Integer.parseInt(reader.readLine());
listOfCars.add(new Car(id, name, noOfSeats));
//System.out.println(id + " name" + name+ " " + noOfSeats);
}
return cars;
我想将文件中的信息存储到集合中,以便以后使用。但是当我调用这个函数时,我得到了这个转换错误。
解决方案
你写
return cars;
这是File cars= new File("dat/cars.txt");
。您需要将正确的对象返回为
return listOfCars;
此外,List<Car> listOfCars= new ArrayList<>();
您可以将其声明为Set<Car> listOfCars= new LinkedHashSet<>();
好像需要 aSet
而不是 a ,而不是在方法中声明List
。
如果您仍想保持原样,则将其转换为的惯用方法Set
如下:
Set<Cars> listOfCars= new LinkedHashSet<>(eneterCars());
注意: LinkedHashSet
保留插入的顺序。如果插入顺序对您来说不重要,您可以使用HashSet
.
推荐阅读
- python - 在函数 2 中使用函数 1 创建的 pandas 数据框?
- visual-studio-code - VSCode + 远程 WSL 某些功能不起作用
- python - 如何使用 python 从网站上抓取段落?
- java - 多态性实现对子字段的强制通用更改
- deep-learning - 连体网络的线性变换
- css - 如何使用 Sass '@use' 命令包含和使用外部变量文件?
- google-apps-script - 在谷歌应用脚本中创建一个条带令牌
- javascript - TypeError: undefined is not an object (evaluate '_reactNative.Stylesheet.create') in react native
- c# - C# Application Lync Function migrated to MS teams
- html - CSS-grid在网格中间插入列