2013-07-30 81 views
0

有人可以幫助我閱讀csv文件列表的列表。像java文件列表的閱讀列表

List<List<File>> filesList; 

希望通過在每個列表中處理所有的文件內容閱讀,但不能與可用於循環結構川方。謝謝。

更新:我想從每個內部文件列表中同時加載文件。像一次從每個內部列表中讀取第一個文件,比較內容,然後移動到特定列表的第二個文件等等。每個內部列表可以是可變大小的。

+0

@tbodt希望每次來讀取每個列表文件,而不是按順序。 – user2456557

回答

1

或者您可以使用Iterator,這樣

List<ArrayList<File>> filesList = new ArrayList<ArrayList<File>>(); 
    //add objects to filesList here 

    Iterator<ArrayList<File>> filesListIterator = filesList.iterator(); 

    while(filesListIterator.hasNext()) 
    { 
     ArrayList<File> files = filesListIterator.next(); 

     Iterator<File> filesIterator = files.iterator(); 

     while(filesIterator.hasNext()) 
     { 
      File file = filesIterator.next(); 
      //do your own logic here; 
     } 
    } 

更新
這可能會幫助你比較

while(filesListIterator.hasNext()) 
    { 
     ArrayList<File> files = filesListIterator.next(); 

     for(int i=0;i<files.size()-1;i++) 
     { 
      File firstFile = files.get(i);//get a file 

      File secondFile = files.get(i+1);//get the next file 

      compareFiles(firstFile,secondFile);//this is your defined 
              //method for compare 
     } 
    } 
+0

相關:http://blog.goyello.com/2013/05/17/express-names-in-code-bad-vs-clean/:D – zapl

+0

@prabhaker想要一次讀取每個列表中的文件,而不是按順序 – user2456557

4

下面是這個合適的循環:

for (List<File> innerList : filesList) 
    for (File file : innerList) 
     // do something for a file 
0
List<List<File>> filesList; 
    for (List<File> list : filesList) { 
     for (File file : list) { 
      // your code here ... 
     } 
    } 
+0

oups ...已經回答。 – Algiz

+0

@tbodt不要投票競爭的答案。 [這是不好的禮節](http://meta.stackexchange.com/questions/175241/is-it-bad-etiquette-to-downvote-a-competing-answer)。 –

0

個人而言,我會建議使用谷歌番石榴如果可以的話,這有concat方法

final List<List<File>> files = Lists.newArrayList(); 
    for (final File file : Iterables.concat(files)) { 
     //doStuff with file 
    } 
+0

我不同意添加一個外部庫來解決這個簡單的問題。您必須鏈接到您的外部圖書館,並且必須將其保存在您的項目中。這是一個殺死蒼蠅的火箭筒。沒關係,如果番石榴已經是你的項目的一部分,否則...... – Algiz