我的代码如下:
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"
(即每个数组中的一个元素)。
我想不出办法做到这一点。
非常感谢任何帮助。
提前致谢。
答案 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;