2010-06-16 38 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