如何在Java中逐行读取数组?

时间:2010-01-08 12:33:52

标签: java arrays arraylist

我的代码如下:

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"(即每个数组中的一个元素)。

我想不出办法做到这一点。

非常感谢任何帮助。

提前致谢。

3 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分:0)

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

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)测试列索引是否对实际行有效。 ... done。

答案 2 :(得分:0)

读取数组列表我们可以使用迭代器接口 使用迭代器我们可以通过数组列表。 这只是一个示例代码。

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]+" ");

         }



   }`

output = hello how;