gpt4 book ai didi

Java: "cons"列表中的项目

转载 作者:太空狗 更新时间:2023-10-29 22:55:07 24 4
gpt4 key购买 nike

我有一个 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);
}
}

最佳答案

我会更改我的要求。在大多数情况下,您的界面中不需要 ListIterable 就可以了。方法如下:

public Iterable<Item> getItemWithChildren(Item item)    {
return Iterables.unmodifiableIterable(
Iterables.concat(
Collections.singleton(item),
item.getChildren()
)
);
}

这是简化版(带有静态导入):

return unmodifiableIterable(concat(singleton(item), item.getChildren()));

关于Java: "cons"列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7069999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com