Как создать двумерный массив на основе двух списков - PullRequest
0 голосов
/ 05 мая 2020

У меня есть такой класс:

@Data
public class Pair {

private List<Long> firstCurrency; // 1, 5, 7, 2

private List<Long> secondCurrency; // 2 , 9 , 11 , 5  
}

На основе этих двух списков я хотел бы создать такой класс:

@Data
public class Pair {
private List<OwnPair> pairs;
}

где OwnPair:

@Data
public class OwnPair {
    private Long timestamps;
    private Long values;
}

итак, в и i будет 4 объекта внутри пар ((1,2), (5,9), (7,9), (2,5))

Примечание:

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

Как я могу написать два списка по буквам.

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Если ваш размер все равно определен (если вы имели в виду «одинаковый размер»), вы также можете использовать массивы, потому что списки имеют смысл только тогда, когда количество записей не определено.

long[] firstCurrency = {1,5,7,2};
long[] secondCurrency = {2,9,11,5};

long[][] merged = new long[firstCurrency.length][2];

for(int i = 0; i<firstCurrency.length; i++)
{
    merged[i][0] = firstCurrency[i];
    merged[i][1] = secondCurrency[i];
}

System.out.println(Arrays.deepToString(merged));

выходы: [[1, 2], [5, 9], [7, 11], [2, 5]]

Если вы действительно хотите использовать списки, просто замените .length на .size() и доступ к массиву на .get(i).

Кроме того, нет нужно обернуть это в собственный класс.

0 голосов
/ 05 мая 2020

Потоковый подход заключается в создании IntStream сверх размера списков. Предполагается, что оба списка имеют одинаковый размер:

List<OwnPair> collect = IntStream.range(0, firstCurrency.size())
    .mapToObj(i -> new OwnPair(firstCurrency.get(i), secondCurrency.get(i)))
    .collect(Collectors.toList());

range() создает IntStream в диапазоне от 0 до 3, затем для каждого индекса mapToObj() сопоставляет индекс с OwnPair. Здесь предполагается конструктор, принимающий два значения. Затем результат собирается в List, но, конечно, его можно изменить на все, что нужно.

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