Как чередовать два массива в новый массив - PullRequest
0 голосов
/ 08 апреля 2020
  • Создает новый список, который содержит элементы списка1 с чередованием
  • с элементами списка2. Например, если list1 содержит
  • <"over", "river", "through", "woods">, а list2 содержит <"the", "and", "the">,
  • тогда новый список должен содержать
  • <"over", "the", "river", "and", "through", "the", "woods">. Чередование между
  • list1 и list2. Если один список длиннее, новый список будет содержать все
  • дополнительные значения из более длинного списка в конце. Например, если list1
  • содержит <"over", "river", "through", "woods">, а list2 содержит <"the", "и">
  • , тогда новый список должен содержать
  • <"over", "the", "river", "and", "through", "woods">.

Я сосу на программирование и могу не видите логи c в последней части этого задания. Спасибо, что нашли время посмотреть на это. // *

private static List<String> mergeLists(List<String> list1, List<String> list2) {
    long max = Math.max(((File) list1).length(),((File) list2).length());
    ArrayList<String> newlist = new ArrayList<String>();
    for (int i = 0; i < max; i++) {
        if (i < list1) {
            newlist.append(list1[i]);
            {
        if (i < list2) {
            newlist.append(list2[i]);
        }
    }


            return newlist; 
        }
    }
}

1 Ответ

1 голос
/ 08 апреля 2020

У вас определенно была правильная идея, вы почти поняли ее. Думаю, ты не слишком много программируешь :). Для этого вы можете использовать свойства List, не приводя к File.

    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        list1.add("over");
        list1.add("river");
        list1.add("through");
        list1.add("woods");

        List<String> list2 = new ArrayList<>();
        list2.add("the");
        list2.add("and");

        mergeLists(list1, list2);
    }

    private static List<String> mergeLists(List<String> list1, List<String> list2) {

        // Get the max length of both arrays
        int max = Math.max(list1.size(), list2.size());

        // Initialize new list
        List<String> newList = new ArrayList<>();

        // add an element of the first list to the new list (if there are more elements)
        // and then add an element from the second list to the new list (if there are more elements)
        // and repeat...
        for (int i = 0; i < max; i++) {
            if (i < list1.size()) {
                newList.add(list1.get(i));
            }

            if (i < list2.size()) {
                newList.add(list2.get(i));
            }
        }

        System.out.println(newList);
        return newList;
    }
...