【问题标题】:How to read from set of arrays line by line in Java?如何在Java中逐行读取一组数组?
【发布时间】:2010-01-08 12:33:52
【问题描述】:

我的代码如下:

private static ArrayList<String[]> file;

...

void method()
{
  file = new ArrayList<String[]>();
  ...
  String[] s = str.split(";");
  file.add(s);
}

在上面,str 是一个用分号分隔的长字符串。

我的问题是我想遍历ArrayList 中的每个数组并从每个数组中获取一个元素。

例如,如果一个数组是"hello; are; today",另一个是"how; you;",那么我想将其检索为"hello how are you today"(即每个数组中的一个元素)。

我想不出办法。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 您确定您的 ArrayList 应该包含字符串数组吗?这基本上转化为字符串的二维列表。

标签: java arrays arraylist


【解决方案1】:
int currentIndex = 0;
StringBuilder b = new StringBuilder();
boolean arraysHaveMoreElements = true;
while (arraysHaveMoreElements) {
    arraysHaveMoreElements = false;
    for (String[] array : file) {
        if (array.length > currentIndex) {
            b.append(array[currentIndex];
            arraysHaveMoreElements = true;
        }
    }
    currentIndex++;
}

【讨论】:

    【解决方案2】:

    这并不太难——假设所有行的大小都相同!!

    private void dumpColumnwise() {
    
      // generate test input
      // String[] firstRow = {"a00", "a01", "a02"};
      // String[] secondRow = {"a10", "a11", "a12"};
      String[] firstRow = "a00;a01;a02".split(";");
      String[] secondRow = "a10;a11;a12".split(";");
    
      List<String[]> rows = new ArrayList<String[]>();
      rows.add(firstRow);
      rows.add(secondRow);
    
      // get longest row
      int numberOfColumns = 0;
      for (String[] row:rows) {
        numberOfColumns = Math.max(numberOfColumns, row.length);
      }
    
      int numberOfRows = rows.size();
      for (int column = 0; column < numberOfColumns; colunm++) {
        for (int row = 0; row < numberOfRows; row++) {
          String[] row = rows.get(row);
          if (column < row.length) {
            System.out.printf(" %s", rows.get(row)[column]);
          }
        } 
      }
    }
    

    改进空间:允许输入具有不同行长的数据。在这种情况下,您必须 (1) 确定最长的行并 (2) 测试列索引是否对实际行有效。 ...完成。

    【讨论】:

      【解决方案3】:

      要读取数组列表,我们可以使用迭代器接口。` 使用迭代器我们可以遍历数组列表。 这只是一个示例代码。

      public static void  main(String []args)
         {
            ArrayList<String[]>  list=new ArrayList<>();
            String arr1[]={"hello","are","today"};
              String arr2[]={"how","you"};
              list.add(arr1);
              list.add(arr2);
             Iterator<String[]> it = list.iterator();
               while(it.hasNext())
               {
                   String[] temp=it.next();
                   System.out.print(temp[0]+" ");
      
               }
      
      
      
         }`
      

      输出=你好如何;

      【讨论】:

        猜你喜欢
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多