Как заполнить ArrayList из слов в текстовом файле? - PullRequest
1 голос
/ 01 апреля 2012

У меня есть текстовый файл, содержащий слова, разделенные новой строкой, например, в следующем формате:

>hello  
>world  
>example 

Как мне создать ArrayList и сохранить каждое слово как элемент?

Ответы [ 6 ]

3 голосов
/ 28 ноября 2012

public static void main (String [] args) выдает IOException { // TODO Автоматически сгенерированный метод заглушки

    File file = new File("names.txt");
    ArrayList<String> names = new ArrayList<String>();
    Scanner in = new Scanner(file);
    while (in.hasNextLine()){
        names.add(in.nextLine());
    }
    Collections.sort(names);
    for(int i=0; i<names.size(); ++i){
        System.out.println(names.get(i));
    }
3 голосов
/ 01 апреля 2012

Вы можете использовать Apache Commons FileUtils.readLines().

Я думаю, List, который он возвращает, уже ArrayList, но вы можете использовать конструктор ArrayList(Collection), чтобы убедиться, что вы его получили.

3 голосов
/ 01 апреля 2012

Самый простой способ - использовать Гуава :

File file = new File("foo.txt");
List<String> words = Files.readLines(file, Charsets.UTF_8);

(Это не гарантированно будет ArrayList, но я бы надеялся , что не имело бы значения.)

0 голосов
/ 01 апреля 2012

Я уверен, что это много библиотек, которые делают это с 1 строкой, но вот «чистая» реализация Java:

Обратите внимание, что мы "завернули" / "оформили" и т. Д. Стандартный FileReader (который читает только один байт за раз) с BufferedReader, который дает нам более приятный метод readLine ().

BufferedReader reader = null;
try {
    reader = new BufferedReader(new InputStreamReader(
            new FileInputStream("test.txt"),
            Charset.forName("ISO-8859-1")));
    List<String> lines = new ArrayList<String>();
    String line;
    while ((line = reader.readLine()) != null) {
        lines.add(line);
    }
    System.out.println(lines);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (reader != null) {
        reader.close();
    }
}
0 голосов
/ 01 апреля 2012

Я положил файл в "C: \ file.txt";если вы выполните следующее, он заполняет ArrayList со словами и печатает их.

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


public class Main {

    public static void main(String[] args) throws Exception {
        File file = new File("C:\\file.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        List<String> lines = new ArrayList<String>();
        String line = br.readLine();
        while(line != null) {
            lines.add(line.replace(">", ""));
            line = br.readLine();
        }
        for(String l : lines) {
            System.out.println(l);
        }
    }

}
0 голосов
/ 01 апреля 2012

Вы читаете файл построчно, создаете ArrayList для строк и добавляете line.substring (1) в определенный ArrayList, если line.length> 0.

...