如何使用 lambdaj 组合列表列表?

发布于 2024-10-30 18:39:55 字数 753 浏览 2 评论 0原文

我希望能够使用 lambdaj 将子列表合并到一个列表中。

我有一个有效的迭代版本:

// HDU elements are children of each subsystem
Collection<SpaceSystemType> subsystems = this.getAllSubsystems();
Set<SpaceSystemType> sources = new HashSet<SpaceSystemType>();

// Iterate the subsystems, collecting all the sources
for (SpaceSystemType subsystem : subsystems)
    sources.addAll(subsystem.getSpaceSystem()); // getSpaceSystem returns a List<SpaceSystemType>

return sources;

我希望能够执行此操作:

extract(subsystems, on(SpaceSystemType.class).getSpaceSystem());

但是 extract 返回 a

List<List<SpaceSystemType>> 

所以我必须使用错误的命令。

哪个 lambdaj 命令可以实现我想要的?

I want to be able to combine sublists into a single list using lambdaj.

I have an iterative version that works:

// HDU elements are children of each subsystem
Collection<SpaceSystemType> subsystems = this.getAllSubsystems();
Set<SpaceSystemType> sources = new HashSet<SpaceSystemType>();

// Iterate the subsystems, collecting all the sources
for (SpaceSystemType subsystem : subsystems)
    sources.addAll(subsystem.getSpaceSystem()); // getSpaceSystem returns a List<SpaceSystemType>

return sources;

I'd like to be able to do this:

extract(subsystems, on(SpaceSystemType.class).getSpaceSystem());

But extract returns a

List<List<SpaceSystemType>> 

so I must be using the wrong command.

Which lambdaj command achieves what I want?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光与爱终年不遇 2024-11-06 18:39:55

我使用展平解决了这个问题:

List<SpaceSystemType> sources = flatten(extract(subsystems, on(SpaceSystemType.class).getSpaceSystem()));

SpaceSystemType 是一个 JAXB 生成的类,表示元素的子树。由于 SpaceSystemType.getSpaceSystem() 返回一个 List,因此有必要指示 lambdaj 从树中获取所有叶子。

I solved this using flatten:

List<SpaceSystemType> sources = flatten(extract(subsystems, on(SpaceSystemType.class).getSpaceSystem()));

SpaceSystemType is a JAXB-generated class representing a subtree of elements. Since SpaceSystemType.getSpaceSystem() returns a List, it's necessary to direct lambdaj to take all of the leaves from the tree.

别想她 2024-11-06 18:39:55

我发现@retrodone 的答案不太容易理解。这是另一个例子:

List<String> lista1 = Arrays.asList(new String[]{"1", "2", "3"});
List<String> lista2 = Arrays.asList(new String[]{"4", "5", "6"});

Bla bla1 = new Bla(lista1);
Bla bla2 = new Bla(lista2);

List<Bla> blas = Lists.newArrayList(bla1, bla2);

System.out.println(flatten(collect(blas , on(Bla.class).getLista())));

I found @retrodone 's answer not so easy to understand. Here's another example:

List<String> lista1 = Arrays.asList(new String[]{"1", "2", "3"});
List<String> lista2 = Arrays.asList(new String[]{"4", "5", "6"});

Bla bla1 = new Bla(lista1);
Bla bla2 = new Bla(lista2);

List<Bla> blas = Lists.newArrayList(bla1, bla2);

System.out.println(flatten(collect(blas , on(Bla.class).getLista())));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文