String[] y = x.toArray(new String[0]);
Подскажите, кто знает, как эта строчка работает?
Что она переводит коллекцию в массив я знаю, но что это вообще в конструкторе?
Создается массив строк String[] array.
В него помещается содержимое списка list методом list.toArray().
Поскольку в списке могут храниться объекты любого типа, а мы хотим получить именно массив строк, методом toArray() предусмотрено, что мы в качестве аргумента этого метода можем использовать любой объект того же класса, что и хотим получить на выходе.
То есть если в качестве аргумента отправим массив строк (в данном случае пустой новый массив строк new String[0]), то и сам метод toArray вернет массив строк.
Подведя итог, мы создали новый массив строк и поместили в него содержимое списка list