@King_Of_Demons
Студент

Как перевести Array в колекцию ArrayList или HashMap?

Необходимо: Выполнить попарное суммирование произвольного конечного ряда случайных чисел следующим образом: на первом этапе суммируются попарно рядом стоящие числа, на втором этапе суммируются результаты первого этапа и т.д. до тех пор, пока не останется одно число.
Я программу написал и она отрабатывает правильно, но надо чтобы числа вместо Array записывались в ArrayList или в HashMap. Прошу тех кто разбираеться в колекциях помочь так как моих знаний в колекциях недостаточно чтобы исправить программу правильно .
import java.util.Arrays;
import java.util.ArrayList;

public class Main
{
    private static int [] arr = {1,2,3,4,5,6,7,8};
    public static void main(String[] args)
    {
        getSumNeighbors(arr);
    }
    private static void getSumNeighbors(int [] nums)
    {
        int [] tmp;
        if (nums.length == 2) {
            System.out.println("Intermediate Sum Values: " + Arrays.toString(nums));
            System.out.println("Final Sum = " + (nums[0] + nums[1]));
            return;
        }
        System.out.println("Intermediate Values: " + Arrays.toString(nums));
        int highLimitIndexTmp;
        if (nums.length%2 == 0) {
            tmp = new int[nums.length/2];
            highLimitIndexTmp = tmp.length;
        }
        else {
            tmp = new int[nums.length/2 + 1];
            highLimitIndexTmp = tmp.length - 1;
            tmp[highLimitIndexTmp] = nums[nums.length - 1];
        }

        int j = 0;
        for (int i = 0; i < highLimitIndexTmp; i++)
        {
            tmp[i] = nums[j] + nums[j + 1];
            j+=2;
        }

        getSumNeighbors(tmp);
    }
}
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Bavashi
@Bavashi
Попробуйте так:

import java.util.*;
import java.lang.*;
import java.util.Arrays;
import java.util.ArrayList;

public class Main
{  
    private static List<Integer> arr = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8));
    public static void main(String[] args)
    {
        getSumNeighbors(arr);
    }
    private static void getSumNeighbors(List<Integer> nums)
    {
        if (nums.size() == 2) {
            System.out.println("Intermediate Sum Values: " + nums);
            System.out.println("Final Sum = " + (nums.get(0) + nums.get(1)));
            return;
        }
        System.out.println("Intermediate Values: " + nums);
      
        int j = 0;
        int c = 0;
        for (int i = 0; i < nums.size(); i++)
        {
            c = nums.get(j) + nums.get(j + 1);
            nums.remove(j);
            nums.remove(j);
            nums.add(c);
            j = 0;
            c = 0;
        }

        getSumNeighbors(nums);
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@yourdreambtw
Можно попробовать из Java 8 Stream Api.
Примерно так, я предполагаю, так как я сам недавно начал изучать стримы.

Например, у нас есть обычный массив int
int[] a = {1, 2, 3, 4};

Преобразуем его в коллекцию ArrayList с помощью стримов и выведем на экран:
Collection<Integer> i = IntStream.of(a).boxed().collect(Collectors.toCollection(ArrayList::new));
        System.out.println(i);    //[1, 2, 3, 4] - уже коллекция ArrayList

Надеюсь, по аналогии сделаешь)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы