0

我的列表包含三个级别的列表。我使用 JPA 从三个不同的数据库表中获取这些数据。

关于更多细节,我有三个不同的对象(组、类型、项目):一个包含类型列表的组,其中包含项目列表。

我只想从不同的类型和组中获取几个项目,然后像列表一样返回这些项目。

问题是:有没有一种优雅而简单的方法来做到这一点?还是我真的需要获取所有项目并逐级分组?

4

1 回答 1

1

Guava 可能会提供一个很好的解决方案:

 Predicate<Group> matchingGroup = ...;
 Predicate<Type> matchingType = ...;

 Function<Group, Type> getType = new Function<Group, Type>(){};
 Function<Type, Item> getItem = new Function...;

 // starting point
 List<Group> myGroups;
 Iterable<Item> filteredItems =
    Iterables.transform(
       Iterables.filter( 
          Iterables.transform(
              Iterables.filter(myGroups, matchingGroup),
              getType),
          matchingType),
       getItem);

或扩展:

 // starting point
 List<Group> myGroups;
 Iterable<Type> types = Iterables.transform(
              Iterables.filter(myGroups, matchingGroup),
              getType);
 Iterable<Item> items = Iterables.transform(
              Iterables.filter(types, matchingType),
              getItem);

可能有一种方法可以使用 Predicates / Functions compose 方法来缩短它。

番石榴来

于 2012-09-12T17:53:52.667 回答