Я пытаюсь изучить Java, точнее, я пытаюсь узнать пару отличий при работе с массивами и списками. Сейчас я пытаюсь понять, как я могу реализовать эту строку list += [i]*i в Java.
Sum = 5000
list = [0, 0]
x = 1
while len(list) < Sum:
list += [x]*x
x += 1
Я пробовал много разных методов, но я не могу найти способ. Результаты, которые я получаю в Java с помощью методов, которые я пробовал, неверны.




Используйте комбинацию цикла 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;
}
Чтобы сделать этот вопрос полезным (см. SO центр помощи), вы должны включить тот код Java, который вы написали, и точно указать, что идет не так; это может быть полезно для будущих читателей. Прямо сейчас ваш вопрос сводится к тому, чтобы попросить других написать для вас код, который слишком широк для SO.