Сделать список из текстового файла в java?

У меня есть текстовый файл, полный чисел, и я хочу прочитать числа на Java, а затем составить список, который я могу сортировать. это было некоторое время, так как я использовал java, и я забываю, как это сделать.

текстовый файл выглядит примерно так:

4.5234  
9.3564
1.2342
4.4674
9.6545
6.7856

Ответ 1

Вы делаете что-то вроде этого.

EDIT: Я попытался реализовать изменения dbkk, упомянутые в его комментариях, поэтому код действительно будет правильным. Скажите, если у меня что-то не так.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ReadList {

    public static void main(String[] args) throws IOException {

        BufferedReader in = null;
        FileReader fr = null;
        List<Double> list = new ArrayList<Double>();

        try {
            fr = new FileReader("list.txt");
            in = new BufferedReader(fr);
            String str;
            while ((str = in.readLine()) != null) {
                list.add(Double.parseDouble(str));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            in.close();
            fr.close();
        }

        for (double d : list) System.out.println(d);
    }

}

Ответ 2

Вы можете использовать Scanner в File и использовать метод nextDouble() или nextFloat().

Scanner scanner = new Scanner(new File("pathToYourFile"));
List<Double> doubles = new ArrayList<Double>();
while(scanner.hasNextDouble()){
    doubles.add(scanner.nextDouble());
}
Collections.sort(doubles);

Ресурсы:

Ответ 3

Это действительно весело и просто, если вы используете Guava:

final File f = new File("your/file.txt");
final List<Float> listOfFloats =
    Lists.transform(Files.readLines(f, Charset.defaultCharset()),
        new Function<String, Float>(){

            @Override
            public Float apply(final String from){
                return Float.valueOf(from);
            }
        });

И вот аналогичная версия, использующая Apache Commons/IO:

final File f = new File("your/file.txt");
final List<String> lines = FileUtils.readLines(f);
final List<Float> listOfFloats = new ArrayList<Float>(lines.size());
for(final String line : lines){
    listOfFloats.add(Float.valueOf(line));
}

Ответ 4

Краткие инструкции без кода:

  • Создайте BufferedReader для чтения из вашего файла.
  • Итерируйте по всему файлу, считая строку за строкой reader.readLine(), пока readLine() не вернет null (== конец файла)
  • Разбирайте каждую строку как Float или Double (например, Float.valueOf(line) или Double.valueOf(line)
  • Добавьте объекты Float или Double к ArrayList.

Ответ 5

Не учитывая тот факт, что вам нужно настроить обработку исключений и на основе вашего кода окружения, он будет выглядеть примерно так:

BufferedReader br = new BufferedReader(new FileReader(new File("filename.txt")));
ArrayList<Double> ald = new ArrayList<Double>();
String line;
while(true)
{
    line = br.readLine();
    if(line == null) break;
    ald.add(new Double(line));
}

Ответ 6

Используйте java.util.Scanner:

public List<Doubles> getNumbers(String fileName) {
  List<Double> numbers = new ArrayList<Double>();
  Scanner sc = new Scanner(new File(fileName));

  while (sc.hasNextDouble()) {
      numbers.add(sc.nextDouble());
  }

  return numbers;
}