这是整个计划:
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?
答案 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);