Массив int(некорректный вывод)
Прошу помочь с кодом. Мне нужно реализовать добавление в массив чисел через метод (который сам должен сделать). Вроде всё получилось, но если я начинаю работу с пустым массивом, то первый элемент становится нулём. Как это поправить?
import java.util.Arrays;
public class program149 {
public static int[] add(int[]a, int b) {
int len = a.length;
int newarr[] = new int[len + 1];
for (int i = 0; i < len; i++) {
newarr[i] = a[i];
newarr[len] = b;
}
return newarr;
}
public static void main(String[] args) {
int[] a = {};
int[] b = add(a, 1); // [1]
int[] c = add(b, 2); // [1, 2]
int[] d = add(c, 3); // [1, 2, 3]
System.out.println(Arrays.toString(d));
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Циклы - хлам: работают медленнее, и запутаться легко. А если использовать System.arraycopy(), то и быстрее, и одновременно можно принимать в качестве второго аргумента произвольное количество интов, тогда еще круче получится))
import java.util.Arrays;
public class program149 {
public static int[] add(int[] a, int ... b) {
int newarr[] = new int[a.length + b.length];
System.arraycopy(a, 0, newarr, 0, a.length);
System.arraycopy(b, 0, newarr, a.length, b.length);
return newarr;
}
public static void main(String[] args) {
int[] a = {};
int[] b = add(a, 1); // [1]
int[] c = add(b, 2); // [1, 2]
int[] d = add(c, 3); // [1, 2, 3]
System.out.println(Arrays.toString(d));
int[] e = add(c, 4,5,6); // [1, 2, 3, 4, 5, 6]
System.out.println(Arrays.toString(e));
}
}
А вот так можно стримами (это медленнее работает), функционалка, как известно, славится лаконичностью:
public static int[] add(int[] a, int ... b) {
return Stream.of(a,b).flatMapToInt(array->Arrays.stream(array)).toArray();
}