Как выглядит эквивалент этого списка Python в Java?

Я пытаюсь изучить Java, точнее, я пытаюсь узнать пару отличий при работе с массивами и списками. Сейчас я пытаюсь понять, как я могу реализовать эту строку list += [i]*i в Java.

Sum = 5000
list = [0, 0]
x = 1
while len(list) < Sum:
    list += [x]*x
    x += 1

Я пробовал много разных методов, но я не могу найти способ. Результаты, которые я получаю в Java с помощью методов, которые я пробовал, неверны.

Чтобы сделать этот вопрос полезным (см. SO центр помощи), вы должны включить тот код Java, который вы написали, и точно указать, что идет не так; это может быть полезно для будущих читателей. Прямо сейчас ваш вопрос сводится к тому, чтобы попросить других написать для вас код, который слишком широк для SO.

Erwin Bolwidt 21.01.2019 01:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте комбинацию цикла for, метода add и структуры данных ArrayList. Это может выглядеть примерно так, как показано ниже.

List<Integer> nums = new ArrayList<>();
int x = 1;
while (condition){
  for (int i=0; i<x; i++) {
    nums.add(x);
  }
  x+=1
}

Ответ принят как подходящий

В прямом переводе (с помощью полезной служебной функции java.util.Collections.nCopies) это выглядит примерно так:

import java.util.*;

int Sum = 5000;  //Following the naming convention in Java (and Python) "Sum" should be lowercase

ArrayList<Integer> list = new ArrayList<Integer>();
//Alternatively: List<Integer> list = new ArrayList<Integer>();

list.add(0);
list.add(0);

int x = 1;
while (list.size() < Sum) {
    list.addAll(Collections.nCopies(x, x));
    x += 1;
}

Другие вопросы по теме