【问题标题】:java i/o read in multi line file and store as arraylistjava i/o 读取多行文件并存储为arraylist
【发布时间】:2015-02-13 12:09:45
【问题描述】:

我想读入一个简单的文本文件并将其保存为 ArrayList。文件是这样的

0.2253 
0.808 
0.132 
0.341 

4.18546
8.65418
1.45535
0.341

and so on...

它们总是四行,并且总是用空格分隔。不知何故,我想用它作为开始新数组的断点,并以第一个新数字作为索引零重新开始。

数字必须存储为字符串。

我想将此数据分配给一个 ArrayList,这样

[0][0] = 0.2253
[0][1] = 0.808
[0][2] = 0.132
[0][3] = 0.341

[1][0] = 4.18546
[1][1] = 8.65418
[1][2] = 1.45535
[1][3] = 0.341

如何使用 java i/o 的结构来做到这一点?

java io 数组列表

到目前为止我有这个..

    //array list data struc
    ArrayList<String> array_list = new ArrayList<String>();

    String component_doc = "/home/joao/document.txt"

    Scanner inFile = null;
    try 
    {
        inFile = new Scanner(new File(component_doc));
    } 
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }

    while(inFile.hasNextLine())
    {
        array_list.add(inFile.nextLine());
    }

【问题讨论】:

  • 那么,到目前为止,您尝试过什么?
  • 看看Two Dimensional ArrayList2 dimensional array list。顺便说一句,没有list 变量。你声明为array_list
  • @Albert 我知道什么是二维数组,我不知道如何通过如上所述从文件中读取来填充一个。
  • 抱歉,您似乎不知道。您声明array_list 的方式存储二维ArrayList 是错误的。应该是ArrayList&lt;ArrayList&lt;String&gt;&gt; array_list

标签: java arraylist io


【解决方案1】:

这是一种读取这些行并将它们放入数组列表的方法。

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;

protected static ArrayList<String> yourArrayList = new ArrayList<String>();
String fileName = "C:\\Users\\myComputer\\Desktop\\test_file.txt";
    try
    {
        List<String> lines = Files.readAllLines(Paths.get(fileName), Charset.defaultCharset());
        for (int i = 0; i < lines.size(); i++)
        {
            yourArrayList.add(lines.get(i).toString());
        }
    }catch(IOException io)
    {
        io.printStackTrace();
    }

【讨论】:

    【解决方案2】:

    只是一个提示:

    ArrayList<ArrayList<String>> array_list = new ArrayList<ArrayList<String>>(); //Create 2D arrayList
    
    // open file and do all previous stuff 
    
    ArrayList<String> item = new ArrayList<String>(); // Create 1D ArrayList 
    
    while(inFile.hasNextLine())
         String str = nextLine(); 
         if (str.trim().length() == 0) {  // is blank line?
             if (item.size() > 0) array_list.add(item); // Store 1D arrayList into 2D 
             item = new ArrayList<String>();  // Create new 1D arrayList
         }
         else { 
              item.add(strLine); // Add each element to 1D arrayList
         } 
    } 
    

    备注:这是ArrayList 的一个实例,因此您无法使用array_list[X][Y] 访问它们。您可以尝试.toArray() 方法将其转换为真正的二维数组。

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 2021-06-03
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2011-09-20
      • 2020-06-26
      • 2013-02-23
      相关资源
      最近更新 更多