Передать ссылку на ArrayLists в метод - PullRequest
2 голосов
/ 16 июня 2010

вот вся программа:

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

}

и скажите, как мне вызвать функцию слияния?

Ответы [ 3 ]

1 голос
/ 16 июня 2010

Signatur метода может выглядеть следующим образом:

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

Возвращенный список будет создан в теле метода и заполнен содержимым списков источников.


Вашкод не должен компилироваться (но это может быть проблема копирования / вставки / преобразования).Эта подпись была бы синтаксически правильной:

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

Не могу доказать это здесь, но это может быть проблема с входящими и исходящими сообщениями.Вместо этого попробуйте эту подпись:

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

в самом конце основного тела метода ...

1 голос
/ 16 июня 2010

Метод, который вы написали, ожидает возврата типа 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);
1 голос
/ 16 июня 2010

Вы бы просто объявили метод следующим образом:

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

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

   // perform merge

   return mergedArray;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...