将ArrayLists的引用传递给方法

时间:2010-06-16 11:12:05

标签: java

这是整个计划:

public  class ListMerge
{
  public static void main( String[] args)
    {

       Scanner input = new Scanner(System.in);

      System.out.println ("Input length of arraylist 1:");
      int n = input.nextInt();
      ArrayList x = new ArrayList();
       ArrayList y = new ArrayList();
       for (int i = 0; i < n; i++)
        {
            System.out.println ("Input x[ " + i +"] :" );
             x.add(new Integer(i));

        }


      System.out.println ("Input length of arraylist 2:");
      int m = input.nextInt();


       for (int i = 0; i < m; i++)
        {
            System.out.println ("Input y[ " + i +"] :" );
            y.add(new Integer(i));

        }


  }
 list int merge(ArrayList<int> x, ArrayList<int> y) 
  {
     List<Integer> all = new ArrayList<Integer>();

      all.addAll(x);
      all.addAll(y);
      System.out.println(all);

   return all;
  }

}

还告诉我如何调用函数merge?

3 个答案:

答案 0 :(得分:1)

你只需声明一个这样的方法:

List<YourObjectType> mergeArrays(ArrayList<YourObjectType> array1, ArrayList<YourObjectType> array2) {

   List<YourObjectType> mergedArray = new ArrayList<YourObjectType>();

   // perform merge

   return mergedArray;
}

答案 1 :(得分:1)

方法signatur可能是这样的:

public static List<YourType> merge(List<YourType> firstList, List<YourType> secondList);

返回的列表将在方法体中创建,并填充源列表的内容。


您的代码不应该编译(但它可能是复制/粘贴/转换问题)。这个签名在语法上是正确的:

List<int> merge(ArrayList<int> x, ArrayList<int> y) { ... }

无法在此证明,但可能是In-和Outboxing的问题。请尝试使用此签名:

List<Integer> merge(ArrayList<Integer> x, ArrayList<Integer> y) { ... }

并在主方法体中使用此声明:

  ArrayList<Integer> x = new ArrayList<Integer>();
  ArrayList<Integer> y = new ArrayList<Integer>();

最后 - 你根本没有在代码中调用merge方法。我错过了像

这样的东西
ArrayList<Integer> result = new ListMerge().merge(x,y);

在主方法体的最后......

答案 2 :(得分:1)

你编写的方法希望返回一个int,试试:

public List<Type> mergeLists(List<Type> a, List<Type> b) {
    List<Type> all = new ArrayList<Type>();
    all.addAll(a);
    all.addAll(b);

    return all;
}

如果您想以不同方式合并,例如如果应该进行某种排序或避免重复,那么您需要将addAlls更改为您需要的任何内容。

通过执行以下操作调用方法:

List<Type> mergedList = mergeLists(x, y);