У меня есть Item
, у которого есть метод List<Item> getChildren()
(который возвращает неизменный список), и для каждого из элементов, которые у меня есть, мне нужно создать список элемента, за которым следуют его дочерние элементы.
Какой самый быстрый способ "cons" (в смысле Lisp/Scheme) мой элемент для создания нового неизменяемого списка? Я могу, конечно, сделать следующее, но это кажется неправильным/расточительным:
public List<Item> getItemAndItsChildren(Item item)
{
if (item.getChildren.isEmpty())
return Collections.singletonList(item);
else
{
// would rather just "return cons(item, item.getChildren())"
// than do the following -- which, although straightforward,
// seems wrong/wasteful.
List<Item> items = new ArrayList<Item>();
items.add(item);
items.addAll(item.getChildren());
return Collections.unmodifiableList(items);
}
}