Java: «против» элемента в списке

У меня есть Item , в котором есть метод List getChildren () (который возвращает неизменяемый список) и для каждого из имеющихся у меня элементов , Мне нужно создать список элемента, за которым следуют его дочерние элементы.

Какой самый быстрый способ « cons » (в смысле Lisp / Scheme) мой элемент для создания нового неизменяемого списка? Я, конечно, могу сделать следующее, но это кажется неправильным / расточительным:

public List 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 items = new ArrayList();
        items.add(item);
        items.addAll(item.getChildren());
        return Collections.unmodifiableList(items);
    }
}

15
задан Jason S 16 August 2011 в 13:47
поделиться