如何归还一个arraylist?

时间:2012-01-27 14:35:33

标签: java arraylist

我想从java中的非类方法返回一个arraylist,我已经搜索过但到目前为止没有找到任何内容。

{
     int d=e.length();
     ArrayList list2 = new ArrayList();
     for (int i=0;i<d;i++)
     {
         list2.add('_');
     }
     return list2;
}

非常感谢!

5 个答案:

答案 0 :(得分:2)

所有方法必须是静态方法或实例方法;由该类或其中一个实例拥有。它不像C或C ++,你可以完全拥有一个类之外的函数。

但是,您可以进行静态导入。

public class UtilClass {
    public static ArrayList getList() { ... return someList; }
}

import static UtilClass.getList;

这会让你或多或少地对待它。但是,它必须定义作为类的一部分,并且是静态的。

编辑:我忘记在示例中将getList设为静态。

答案 1 :(得分:1)

您需要做的就是将返回类型放在签名中,然后返回列表

public class Example {
    // a static method
    public static List someStaticMethod(){
       // create and return a List
    }

    // this method is not static
    public List someMethod(){
       // create and return a List
    }

}

请注意,因为ArrayList扩展List,您可以将返回类型设置为其中之一。

List更通用,您可以返回任何类型的列表。这很有用,因为如果您想更改您使用的内部列表(例如从ArrayList更改为LinkedList),则无需在使用该方法的任何位置更改API。

但是,如果您使用的列表实现具有自己的List接口未定义的方法,那么当您从方法中获取列表时,您将无法访问这些方法,除非你要么扮演(母羊),要么指定确切的回归类型。

答案 2 :(得分:0)

您的代码看起来像groovy closure - 也许您应该尝试这样做。

答案 3 :(得分:0)

您的方法定义应该是这样的。

public ArrayList<Character> getCharList(String e)
{    
    int d = e.length();
    // as of Java 1.5, generic collections are available
    ArrayList<Character> list2 = new ArrayList<Character>();
    for (int i=0;i<d;i++) {
        list2.add(new Character('_'));
    }
    return list2;
}

我假设您正在调用String的length()方法。请适应您的情况。

要获取列表,请执行以下操作:

String e = "a string";
ArrayList<Character> myList = myClass.getCharList(e);

答案 4 :(得分:0)

任何非void的方法都可以返回任何类型的数据,但是,您只能返回方法允许的类型。例如,以public int开头的方法只能返回int值。要返回ArrayList,您的方法必须在声明中包含ArrayList,如下所示:

public ArrayList thisReturnsAnArrList(ArrayList list) {
    return list; //'list' is of the type 'ArrayList'
}

但是,您可以更宽松并且方法返回List。由于多个类继承自List(即ArrayListLinkedList),因此您可以返回任何扩展List的值。