[英]How to iterate over a List containing array of strings
我正在使用 openCSV 閱讀器讀取 csv 文件。 有一個方法 readAll 將 List 作為結果。
List<String[]> myEntries = reader.readAll();
我想從中獲取每個字符串。 我試過這個,但沒有成功。
Iterator itr = myEntries.iterator();
while(itr.hasNext()) {
Object element = itr.next();
for(String temp:element)
System.out.println(temp);
}
它給了我一個錯誤,說foreach
不能應用於類型Object
。 如何從中獲取字符串?
列表元素的類型為String[]
。 在聲明中使用它:
Iterator<String[]> itr = myEntries.iterator();
...
String[] element = itr.next();
如果解決方法對您來說並不重要,我建議使用foreach
語句:
for(String[] a : myEntries)
for(String s : a)
// do what you want to
否則,你應該這樣寫
Iterator<String[]> iterator = myEntries.iterator();
while(itr.hasNext())
for(String temp : itr.next())
// Don't worry, itr.next() will be created only one time
// for an each iteration (while)
System.out.println(temp);
,看起來不漂亮,閱讀可能有困難。
嘗試以下代碼,
for (String[] element : myEntries) {
for (String temp : element)
System.out.println(temp);
}
reader.readAll().forEach(stringArray -> {
for(String element : stringArray){
System.out.println(element);
}
});
最簡單的方法是使用 foreach 循環,就像對數組所做的那樣:
for (String[] entry : myEntries) {
for (String temp : element) {
System.out.println(temp);
}
}
如果你真的需要一個迭代器,那么不要使用原始類型:
for (Iterator<String[]> it = myEntries.iterator(); it.hasNext();) {
String[] entry = it.next();
for (String temp : entry) {
System.out.println(temp);
}
}
你應該總是在塊周圍使用花括號,即使你的塊只有一條指令。 這使代碼更具可讀性,更易於維護,並有助於避免許多錯誤。
如果您更喜歡 Java 8,那么它的聲明性更強。
myEntries.forEach(entries ->
Arrays.stream(entries).forEach(entry -> System.out.println(entry)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.