首页 > 解决方案 > 我的 ArrayList 没有返回所有元素

问题描述

当我使用 System.out.println 静态方法时,下面的 Java 程序会显示 ArrayList 中的所有元素。但是,当我在方法中返回列表时,它只显示 ArrayList 中的一个元素。我会感谢一些关于做错的方向:

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileProcessor {  
  static List<String> theList = null;

  /**
   * 
   * @return List
   */
  public static List<String> processFiles() {      
    try {    
      File f = new File("/Data/fileDump");
      String[] listOfFiles = f.list();

      for(String eachFile: listOfFiles) {  
        if(eachFile.startsWith("hawk") == true) { 
          theList = new ArrayList<>(); 
          theList.add(eachFile); 
          return theList;
        }
      }
    } catch(Exception e) {
      e.printStackTrace();
    }
    return theList;
  }


  public static void main(String[]args) {
    List<String> dataList = FileProcessor.processFiles(); 
    for(String strg: dataList) {
      if(strg != null) {
        System.out.println(strg);
      }
    }
  }
}

标签: javaarraylist

解决方案


将您的功能替换为以下内容。

      public static List<String>  processFiles() { 
          List<String> theList = null;
          try {    

             File  f = new File("/Data/fileDump");
             String[] listOfFiles = f.list();
             theList = new ArrayList<>(); // initialisation moved outside of loop
             for(String eachFile:   listOfFiles) {  
                 if(eachFile.startsWith("hawk") == true){              
                    theList.add(eachFile); 
               }
             }
             return theList;// return statement moved outside of the loop

          } catch(Exception e) {
             e.printStackTrace();
          }
        return theList;
       }

推荐阅读