使用番石榴从集合中获取属性列表进入统一列表
Get list of properties from collection Into unified list using Guava
我的公司要求我们在遍历对象集合时使用 Guava 的函数和谓词。虽然我不一定同意应该这样,但这是我公司的标准,所以请不要给我评论说它效率低下或类似的事情:)
我需要,特别是在 Java 1.7 中使用 Guava,找到一种获取对象集合并将所有内部字段放入统一列表的方法。这是我所得到的,但我无法获得内部字段:
public static final Function<Group, String> GROUP_TO_GROUP_NAME =
new Function<Group, String>()
{
@Override
public String apply(Group group)
{
return group.getGroupName();
}
};
public static List<String> transformToGroupNames(List<GroupCollection> groupCollections)
{
List<Group> groups = new ArrayList<>();
for (GroupCollection groupCollection: groupCollections)
{
groups.addAll(groupCollection.getGroups());
}
return FluentIterable.from(groups)
.transform(GROUP_TO_GROUP_NAME)
.filter(Predicates.notNull())
.toList();
}
我的目标是通过 groupCollections 替换循环
要将组集合展平为单个组集合,您可以使用 FluentIterable.transformAndConcat(Function)
:
public static final Function<GroupCollection, List<Group>> GROUP_COLLECTIONS_TO_GROUP_COLLECTION =
new Function<GroupCollection, List<Group>>() {
@Override
public List<Group> apply(GroupCollection input) {
return input.getGroups();
}
};
public static final Function<Group, String> GROUP_TO_GROUP_NAME =
new Function<Group, String>() {
@Override
public String apply(Group group) {
return group.getGroupName();
}
};
public static List<String> transformToGroupNames(List<GroupCollection> groupCollections) {
return FluentIterable.from(groupCollections)
.transformAndConcat(GROUP_COLLECTIONS_TO_GROUP_COLLECTION)
.transform(GROUP_TO_GROUP_NAME)
.filter(Predicates.notNull())
.toList();
}
我的公司要求我们在遍历对象集合时使用 Guava 的函数和谓词。虽然我不一定同意应该这样,但这是我公司的标准,所以请不要给我评论说它效率低下或类似的事情:)
我需要,特别是在 Java 1.7 中使用 Guava,找到一种获取对象集合并将所有内部字段放入统一列表的方法。这是我所得到的,但我无法获得内部字段:
public static final Function<Group, String> GROUP_TO_GROUP_NAME =
new Function<Group, String>()
{
@Override
public String apply(Group group)
{
return group.getGroupName();
}
};
public static List<String> transformToGroupNames(List<GroupCollection> groupCollections)
{
List<Group> groups = new ArrayList<>();
for (GroupCollection groupCollection: groupCollections)
{
groups.addAll(groupCollection.getGroups());
}
return FluentIterable.from(groups)
.transform(GROUP_TO_GROUP_NAME)
.filter(Predicates.notNull())
.toList();
}
我的目标是通过 groupCollections 替换循环
要将组集合展平为单个组集合,您可以使用 FluentIterable.transformAndConcat(Function)
:
public static final Function<GroupCollection, List<Group>> GROUP_COLLECTIONS_TO_GROUP_COLLECTION =
new Function<GroupCollection, List<Group>>() {
@Override
public List<Group> apply(GroupCollection input) {
return input.getGroups();
}
};
public static final Function<Group, String> GROUP_TO_GROUP_NAME =
new Function<Group, String>() {
@Override
public String apply(Group group) {
return group.getGroupName();
}
};
public static List<String> transformToGroupNames(List<GroupCollection> groupCollections) {
return FluentIterable.from(groupCollections)
.transformAndConcat(GROUP_COLLECTIONS_TO_GROUP_COLLECTION)
.transform(GROUP_TO_GROUP_NAME)
.filter(Predicates.notNull())
.toList();
}