package com.javarush.task.pro.task18.task1810;
import java.util.ArrayList;
import java.util.Collections;
/*
Преобразование списка в массив
*/
public class Solution {
public static void main(String[] args) {
var strings = new ArrayList<String>();
Collections.addAll(strings, "Ты", "ж", "программист");
var integers = new ArrayList<Integer>();
Collections.addAll(integers, 1000, 2000, 3000);
String[] stringArray = toStringArray(strings);
for (String string : stringArray) {
System.out.println(string);
}
Integer[] integerArray = toIntegerArray(integers);
for (Integer integer : integerArray) {
System.out.println(integer);
}
}
public static String[] toStringArray(ArrayList<String> strings) {
return strings.toArray(String[]::new);
}
public static Integer[] toIntegerArray(ArrayList<Integer> integers) {
//напишите тут ваш код
return integers.toArray(Integer[]::new);
}
}
Goldenboy
23 уровень
Может кто-то подробнее объяснить что за new? что за конструктор вызывается и почему это эквивалетно этой записи return strings.toArray(x -> new String[]{})?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
6 июня 2024, 15:47
Через двоеточие указывается ссылка на метод. Но запись не вполне эквивалентна тому что ты написал. toArray ожидает в качестве аргумента функцию которая предоставляет массив нужного типа и нужного размера (по дефолту - пустой). После чего в него уже складываются элементы или каким либо иным образом возвращается массив элементов нужного типа, можешь посмотреть имплементации в коде JDK.
Вот так бы выглядел твой метод в виде классической лямбды
+1
Goldenboy
6 июня 2024, 15:10
типа new - new String[]{} ???
new Strings[]{"Ты", "ж", "программист"} - записываем в массив значения, верно? - меня смущают вторые фигурные скобки
0
Hack
12 апреля, 08:07
посмотри как реализован метод toArray
0