簡體   English   中英

如何迭代包含字符串數組的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM