使用返回的ArrayList

时间:2013-02-28 12:50:46

标签: java arraylist

我目前正在拼命地尝试将一个从函数返回的ArrayList转换为我的main函数中的新ArrayList ...

以下是代码段:

public static ArrayList<String> permute(String begin, String end) {
ArrayList<String> al=new ArrayList<String>();
//filling bla
return al;
}

这是我在main函数中调用函数的地方:

ArrayList<String> arr =permute("","abc");
不幸的是,arr是空的,我不知道如何让它工作:(

提前致谢

编辑: 这是完整的代码:

import java.util.*;
class Problem24 {

    public static ArrayList<String> permute(String begin, String end) {
        ArrayList<String> al=new ArrayList<String>();
        if (end.length() <= 1) {
            String s=begin+end;
            al.add(s);
        } else {
            for (int i = 0; i < end.length(); i++) {
                try {
                    String newString = end.substring(0, i) + end.substring(i + 1);
                    permute(begin + end.charAt(i), newString);
                } catch (StringIndexOutOfBoundsException exception) {
                    exception.printStackTrace();
                }
            }
     }
     return al;
  }
    public static void main (String[] args)
    {
        ArrayList<String> arr =permute("","abc");
            System.out.println(arr.get(0));
    }
}

6 个答案:

答案 0 :(得分:2)

您的ArrayList为空但不为null,这意味着返回的部分有效。在oder中使用方法中的值需要填充方法内的ArrayList。

ps:你应该使用List list = new ArrayList()或 列表列表= permute(“”,“abc”),这是依赖注入的简单版本和更好的程序设计。

答案 1 :(得分:1)

在返回值之前,请确保填写al列表

     al.add(begin);
     al.add(end);
     al.add("any other string");

     return al;

答案 2 :(得分:1)

显然// filling bla部分有问题。

我首先将// filling bla中的代码替换为al.add("TEST");,然后查看是否有任何问题。

此外,您的方法是静态的,并且未传入源数组,这表明您的代码应该以某种方式置换这些字符串。您是否可能在静态数组上进行操作(即在开始和结束之间置换所有元素),并且源数组是空的?

答案 3 :(得分:1)

您没有添加递归调用中的项目。

尝试将al.addAll添加到您的置换调用中:

al.addAll(permute(begin + end.charAt(i), newString));

答案 4 :(得分:0)

import java.util.*;
class Problem24
{

    public static ArrayList<String> permute(String begin, String end)
    {
        ArrayList<String> al=new ArrayList<String>();
        if (endingString.length() <= 1)
        {
            String s=begin+end;
            al.add(s);
        }
        else
        {
            for (int i = 0; i < end.length(); i++)
            {
                try
                {
                    String newString = end.substring(0, i) + end.substring(i + 1);
                    al.add(permute(begin + end.charAt(i), newString));
                }
                catch (StringIndexOutOfBoundsException exception)
                {
                    exception.printStackTrace();
                }
            }
        }
        return al;
    }

    public static void main (String[] args)
    {
            ArrayList<String> arr = permute("","abc");
            System.out.println(arr.get(0));
    }
}
希望我以正确的方式纠正它。

答案 5 :(得分:0)

你反复调用你的方法 - 但你没有使用它返回时返回的内容。换句话说,每次调用permute时都会创建一个新数组,但是你在for循环中获得的所有东西都会丢失,因为你没有将它传递给下一个permute()调用 - 最终你返回一个空数组,你在其中没有放任何东西。