我有一个带有String数组的ArrayList,我无法弄清楚如何循环。迭代器对我来说是新手,即使我过去使用它们,我也不确定该怎么做。
Iterator<String[]> iterator = list.iterator();
while (iterator.hasNext()) {
String trip = "Till: " + iterator.next(0) + " | Från: " + list.get(4) + " | Kostar: " + list.get(1) +"kr | Avgår: " + list.get(2) + " | Ankomst Tid: " + list.get(3) + " | Antal bokningar: " + list.get(4);
这是我正在做的一些实验。我虽然iterator.next()会在当前行返回StringArray,所以我尝试了例如iterator.next(0)。据我所知list.get(x)只给我一行。
在上面的代码中,我希望每个行String Array都在某个索引处。 像这样:
for each row
system.out.println(String[2] +String[5]);
答案 0 :(得分:6)
那是因为你有一个数组列表,而不是一个字符串列表。
List<String[]> list = //some data
for (String[] array : list){
System.out.println(array[3] + ":" + array[5]);
}
如果要迭代每个字符串,则必须迭代两次。
List<String[]> list = //some data
for (String[] array : list){
for (String s : array){
System.out.println(s);
}
}
修改的
以上是使用迭代器的简写。
List<String[]> list = //some data
Iterator<String[]> itr = list.iterator();
while (itr.hasNext()){
String[] array = itr.next(); // You were just missing saving the value for reuse
System.out.println(array[3] + ":" + array[5]);
}
答案 1 :(得分:1)
您可以在不必担心代码中的迭代器的情况下执行此操作:
List<String[]> test = new ArrayList<>();
for(String[] array : test) {
//Iterate over inner array:
for(String s : array) {
System.out.println(s);
}
//or access directly
System.out.println(array[0]);
}
答案 2 :(得分:0)
Iterator<String[]> iterator = list.iterator();
while (iterator.hasNext()) {
String[] row = iterator.next();
//Do stuff with row
}
如果您正在使用列表,您还可以使用for循环:
for(String[] row : list) {
//Do stuff with row
}
答案 3 :(得分:-1)
ArrayList中的每个项都是String [],因此iterator.next()返回一个String []。拥有该String数组后,您可以像使用数组索引表示法的任何其他数组一样访问它。 item[0]
是数组中的第一项,item.length
告诉您数组中有多少项。
你调用list.get(4)
的地方也会返回一个字符串数组,这几乎肯定不是你想要的输出。