首页 > 解决方案 > 从文件中获取输入并将其放入集合中,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;

我想将文件中的信息存储到集合中,以便以后使用。但是当我调用这个函数时,我得到了这个转换错误。

标签: javafile

解决方案


你写

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.


推荐阅读