0

我将一些 ArrayList 保存到一个文件中,它具有以下格式:

[hotel1, hotel2, hotel3]               // ArrayList 1 contents
[hotel5, hotel6]                       // ArrayList 2 contents

当我阅读时,我想分配一个 ArrayList myList,我想将hotel1、hotel2 和hotel3 添加到myList。有什么办法可以直接做到吗?目前我有一个读取下一行的字符串值,它保存括号。正在寻找另一种方法,以便我可以将每一行分配给 ArrayList < String > 对象。

public class MyClass1 {
   ArrayList<String> myList = new ArrayList<String>();
    ... // some other code

private void loadUp() throws IOException{
    JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Choose a file to open...");
        checker = chooser.showOpenDialog(null);

    // if open is clicked
    if (checker == JFileChooser.APPROVE_OPTION) {
        File inFile = chooser.getSelectedFile();
        Scanner in = new Scanner(inFile);
        while (in.hasNextLine()) {
            // Here want to assign next line to myList
        }
        in.close();
}
 }
4

2 回答 2

3

用这个:

Scanner file = new Scanner(myFile);
ArrayList<Scanner> lines = new ArrayList<>();
while(file.hasNextLine())
    lines.add(new Scanner(file.nextLine()));
ArrayList<ArrayList<String>> lists = new ArrayList<>(lines.size());
for(Scanner s : lines)
    s.useDelimeter("[, ]" + System.lineSeparator());
for(int i = 0; i < lines.size(); ++i)
{
    while(lines.get(i).hasNext())
    {
        lists.add(new ArrayList<String>());
        lists.get(i).add(lines.get(i).next());
    }
}

然后你会得到一个包含值的字符串列表列表。

于 2013-04-04T18:03:58.750 回答
2

尝试下面的代码来阅读每一行

 BufferedReader br = new BufferedReader(new FileReader(file));
    String line;
    while ((line = br.readLine()) != null) {
       // process the line.
    }
    br.close();
于 2013-04-04T18:23:03.067 回答