объединить два списка - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать простую программу, которая берет два списка и объединяет их вместе. Я не могу понять логику, чтобы заставить эту работу все же. Часть, которая не работает, это оператор return.

import java.util.ArrayList;
public class ListConcatenate {
public static void main(String[] args) {


List<String> list = new List<>();
List<String> secondList = new List<>();
list.insertAtFront("Hello");
list.insertAtBack("World");
secondList.insertAtFront("it's");
secondList.insertAtFront("me");
}
public static<E> List<E> concatenate(List<E> list, List<E> secondList){


    //List<E> newList = new List<>();


    return new ArrayList<E>(){{
        addAll(list);
        addAll(secondList);
    }};
    }




}

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

List - это интерфейс. Вы не можете создать экземпляр List. используйте ArrayList

public static void main(String[] args) {

    List<String> list = new ArrayList<>();
    List<String> secondList = new ArrayList<>();
    list.add("Hello");
    list.add(0, "World");
    secondList.add("it's");
    secondList.add("me");
    concatenate(list, secondList).forEach(System.out::println);
  }

  public static <E> List<E> concatenate(List<E> list, List<E> secondList) {
    List<E> newList = new ArrayList<>();
    newList.addAll(list);
    newList.addAll(secondList);
    return newList;
  }
0 голосов
/ 30 октября 2018

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

Если вы хотите вставить что-то впереди, используйте метод add, который принимает index и элемент. Если вы хотите вставить что-то сзади, просто используйте метод add. Я пытался редактировать ваш код, и он, кажется, работает отлично. Удачи! Вот, пожалуйста:

import java.util.ArrayList;
import java.util.List;
public class ListConcatenate {
public static void main(String[] args) {


List<String> list = new ArrayList<>();
List<String> secondList = new ArrayList<>();
list.add(0,"Hello");
list.add("World");
secondList.add(0,"it's");
secondList.add(0,"me");
List<String> result = concatenate(list,secondList);
for(String s : result ) {
    System.out.println(s);
}
}
public static<E> List<E> concatenate(List<E> list, List<E> secondList){


    //List<E> newList = new List<>();


    return new ArrayList<E>(){{
        addAll(list);
        addAll(secondList);
    }};
    }




}
0 голосов
/ 30 октября 2018

Почему бы не использовать List :: addAll

list.addAll (secondList); return list;

См. https://www.geeksforgeeks.org/java-util-arraylist-addall-method-java/

...