如何从方法返回数组列表

Posted

技术标签:

【中文标题】如何从方法返回数组列表【英文标题】:How to return an arraylist from a method 【发布时间】:2011-04-14 11:12:45 【问题描述】:

我需要帮助。对于这个特定的方法。我试图让它返回一个我标记化的数组列表。

public ArrayList read ()

  BufferedReader inputStream = null;
  try 
    inputStream = new BufferedReader(new FileReader("processes1.txt"));
    String l;
    while ((l = inputStream.readLine()) != null) 

      ArrayList<String> tokens = new ArrayList<String>();

      Scanner tokenize = new Scanner(l);
      while (tokenize.hasNext()) 
        tokens.add(tokenize.next());
      
      return tokens;
    
   catch(IOException ioe)
    ArrayList<String> nothing = new ArrayList<String>();
    nothing.add("error1");
    System.out.println("error");
    //return nothing;
  
  return tokens;

我做错了什么?!

【问题讨论】:

作为注释,一般来说,返回 List 而不是 ArrayList 被认为是一种好的做法,以防您在某些时候需要更改实现。 【参考方案1】:

最后,您正在执行return tokens,但该变量是在 try 块内部定义的,因此无法在其外部访问。您应该添加:

ArrayList&lt;String&gt; tokens = new ArrayList&lt;String&gt;();

到方法的顶部,就在 BufferedReader 下方。

【讨论】:

线程“main”中的异常 java.lang.NoSuchMethodError: main Press any key to continue 。 . . @Luron - 这是一个完全不同的问题,这意味着您没有在类中指定 public static void main(String[] args) 方法。这是 JVM 要求的【参考方案2】:

尝试返回 ArrayList,这是在这种情况下更合适的返回类型。泛型类型与您的示例似乎使用它们的方式并不相关。

【讨论】:

【参考方案3】:

这可能是您的 main 方法中的某个错误。您是在实例化该类并在其上调用方法 read() 吗?

【讨论】:

【参考方案4】:

试试这个:

public ArrayList read ()

          File text = new File("processes1.txt");

              ArrayList<String> tokens = new ArrayList<String>();

              Scanner tokenize;
            try 
                tokenize = new Scanner(text);
                while (tokenize.hasNext()) 

                      tokens.add(tokenize.next());
                  

                

            catch(IOException ioe)
                ArrayList<String> nothing = new ArrayList<String>();
                nothing.add("error1");
                System.out.println("error");
                //return nothing;
              
             return tokens;

    

【讨论】:

以上是关于如何从方法返回数组列表的主要内容,如果未能解决你的问题,请参考以下文章

如何从函数返回 char 数组?

Hibernate SQLQuery 列表方法返回对象而不是对象数组

使用 Spring MVC 从 Jquery ajax 方法返回字符串数组

SwiftUI + Firestore - 基于从 Firestore 返回的数组的过滤器列表

如何从 C# 数组中返回唯一元素

js如何从列表中寻找一个元素是不是存在?