2010-06-16 39 views
2

这里是整个程序:通行证参考的ArrayList的方法

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; 
    } 

} 

也告诉我,我如何调用该函数合并吗?

+1

你要如何合并呢? – 2010-06-16 11:14:49

+0

Nitpicking:请注意,如果您尝试使用元素类型“int”的集合,Java编译器会发出抱怨,因为“int”是基本类型,并且基本类型不能与泛型一起使用。 – Dirk 2010-06-16 11:26:26

+0

可能重复(相同的海报,相同的模糊问题)[如何合并两个有序的对象列表?](http://stackoverflow.com/questions/3051603/how-to-merge-two-ordered-list-of-对象) – polygenelubricants 2010-06-16 11:26:52

回答

1

你只宣布这样的方法:

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

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

    // perform merge 

    return mergedArray; 
} 
1

的方法签字:可能是这样的:

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>(); 

最后 - 你没有调用合并方法都在你的代码。我想的东西像

ArrayList<Integer> result = new ListMerge().merge(x,y); 

在main方法体的尽头......

+0

非常感谢。 它完成。 但现在还有另一个问题。它不会从用户 – 2010-06-16 11:51:23

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); 
+0

输入其不能正常工作...... – 2010-06-16 11:34:50

+0

它不能识别列表。我该怎么做? – 2010-06-16 11:39:20

+0

什么不工作?你会意识到,无论我在我的答案中写入'Type',我都希望你用你正在处理的对象的类型来替换它,根据你的问题的更新,我猜是Integer。 – DaveJohnston 2010-06-16 11:39:34