如何分区Java列表以获得具有特定条件的列表和其他所有相交的列表?

阿什温克

如何分区Java List得到以下两种类型的列表:

  1. 包含满足特定条件的元素的列表
  2. 包含所有元素但它们将是彼此的交集的列表

我目前的工作方法是使用forEach如下:

Map<String, Set<Attribute>> applicableAttributeMap = new HashMap<>();

Set<Attribute> unionMandatoryAttributes = new HashSet<>();
Set<Attribute> intersectedAttributes = new HashSet<>();

givenNames.forEach(givenName -> {
    List<Attribute> applicableAttributes = getAllApplicableAttributes(givenName);  //function to retrieve List<Attribute> by passing givenName
    if (applicableAttributes != null && !applicableAttributes.isEmpty()) {
        unionMandatoryAttributes.addAll(
                applicableAttributes
                        .stream()
                        .filter(Attribute::getIsRequired)
                        .collect(Collectors.toSet())
        );

        if (intersectedAttributes.isEmpty()) {
            intersectedAttributes.addAll(applicableAttributes);
        }
        intersectedAttributes.retainAll(applicableAttributes);
    }
});

applicableAttributeMap.put(UnionMandatory, unionMandatoryAttributes);
applicableAttributeMap.put(IntersectedAll, intersectedAttributes);

我正在尝试使用 简化上面的代码块partitioningBy,但我无法获得所需的输出。我无法收集另一个包含所有元素和Map's keyas 的列表String

这是我的partitioningBy方法

Map<Boolean, Set<Attribute>> applicableMap = givenNames
        .stream()
        .flatMap(s -> getAllApplicableAttributes(s).stream())
        .filter(Objects::nonNull)
        .collect(Collectors.partitioningBy(
                Attribute::getIsRequired,
                Collectors.mapping(Function.identity(),Collectors.toSet())
        ));

我如何创建Map<String , Set<Attributes>>满足工作方法或任何其他简化解决方案中给出的条件

(注意:所以我的目标是实现工作方法发生的确切情况,我可能在解释问题时遗漏了一些东西。但最重要的是通过使用类似的方法或任何比什么更好的方法来获得与工作方法相同的结果partitioningBy我弄完了。)

迈克尔

迭代两次givenNames看起来是最好的方法:

    Map<String, Set<Attribute>> applicableAttributeMap = new HashMap<>();

    List<String> givenNames = ImmutableList.copyOf(....);

    Set<Attribute> unionMandatoryAttributes =   
             givenNames.stream()
                       .map(this::getAllApplicableAttributes)
                       .flatMap(Collection::stream)
                       .filter(Attribute::getIsRequired)
                       .collect(Collectors.toSet());

    Set<Attribute> intersectedAttributes = ImmutableSet.of();
    if (givenNames.size() > 0) {
        intersectedAttributes = this.getAllApplicableAttributes(givesNames.get(0));         
        for (int i = 1; i < givenNames.size(); i++) {
             intersectedAttributes = Sets.intersection(intersectedAttributes, getAllApplicableAttributes(givesNames.get(i)));                           
        }
    }

    applicableAttributeMap.put("UnionMandatory", unionMandatoryAttributes);
    applicableAttributeMap.put("IntersectedAll", intersectedAttributes);
}

请注意,此代码依赖于番石榴的ImmutableList,ImmutableSetSets.intersection

还要注意getAllApplicableAttributes此代码中调用的次数翻了一番

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建具有特定条件的数字列表

来自分类Dev

Excel列出具有特定条件的列表

来自分类Dev

使用特定条件从Java包中检索所有导入的列表

来自分类Dev

如何将字典列表转换为具有特定条件的数据框?

来自分类Dev

从列表列表中输出在其他所有元素列表中不相交的元素集合图

来自分类Dev

Excel-如何根据具有列表条件的特定条件允许自定义输入单元格

来自分类Dev

我如何获得列表以及子列表,其中子列表在NHibernate中具有某些条件

来自分类Dev

使用LINQ,您将如何从列表中滤除特定条件中的除一项以外的所有项?

来自分类Dev

没有其他条件的列表理解

来自分类Dev

如何从Sass列表中删除所有其他项目?

来自分类Dev

haskell:递归函数,返回具有特定条件的元组列表中的char(比较)

来自分类Dev

如何使用Common Lisp获得满足条件的列表的集合和子集的所有可能组合

来自分类Dev

如何获得 Redditor 列表发布的所有提交和评论?

来自分类Dev

jQuery将列表项替换为具有特定类的其他列表项

来自分类Dev

创建包含具有特定显示顺序的其他列表的元素的列表

来自分类Dev

在列表对象列表中,如何将每个列表对象与所有其他列表对象进行比较?

来自分类Dev

如何获得所有CakePHP路由的列表?

来自分类Dev

与列表元素的所有可能组合相交

来自分类Dev

COUNTIF具有多个条件和列表

来自分类Dev

如何获得列表列表的所有迭代?

来自分类Dev

将列表列表中的所有NULL值替换为其他内容/具有不同长度的列表列表

来自分类Dev

从列表返回对象,该对象从列表中的其他对象计算出的特定条件正确

来自分类Dev

从列表列表中删除所有具有特定项目的列表

来自分类Dev

Pyspark基于具有列表或集合的多个条件的其他列创建新列

来自分类Dev

从列表中获取所有交换分区 ID 和路径

来自分类Dev

如何获得具有相同序列号的表中所有元素的列表?

来自分类Dev

如何获得我的discord机器人所具有的所有角色的列表?

来自分类Dev

在字典列表中,更改特定元素也会更改所有其他元素

来自分类Dev

SQL查询以获取在特定条件下具有其他列的重复列值

Related 相关文章

  1. 1

    如何创建具有特定条件的数字列表

  2. 2

    Excel列出具有特定条件的列表

  3. 3

    使用特定条件从Java包中检索所有导入的列表

  4. 4

    如何将字典列表转换为具有特定条件的数据框?

  5. 5

    从列表列表中输出在其他所有元素列表中不相交的元素集合图

  6. 6

    Excel-如何根据具有列表条件的特定条件允许自定义输入单元格

  7. 7

    我如何获得列表以及子列表,其中子列表在NHibernate中具有某些条件

  8. 8

    使用LINQ,您将如何从列表中滤除特定条件中的除一项以外的所有项?

  9. 9

    没有其他条件的列表理解

  10. 10

    如何从Sass列表中删除所有其他项目?

  11. 11

    haskell:递归函数,返回具有特定条件的元组列表中的char(比较)

  12. 12

    如何使用Common Lisp获得满足条件的列表的集合和子集的所有可能组合

  13. 13

    如何获得 Redditor 列表发布的所有提交和评论?

  14. 14

    jQuery将列表项替换为具有特定类的其他列表项

  15. 15

    创建包含具有特定显示顺序的其他列表的元素的列表

  16. 16

    在列表对象列表中,如何将每个列表对象与所有其他列表对象进行比较?

  17. 17

    如何获得所有CakePHP路由的列表?

  18. 18

    与列表元素的所有可能组合相交

  19. 19

    COUNTIF具有多个条件和列表

  20. 20

    如何获得列表列表的所有迭代?

  21. 21

    将列表列表中的所有NULL值替换为其他内容/具有不同长度的列表列表

  22. 22

    从列表返回对象,该对象从列表中的其他对象计算出的特定条件正确

  23. 23

    从列表列表中删除所有具有特定项目的列表

  24. 24

    Pyspark基于具有列表或集合的多个条件的其他列创建新列

  25. 25

    从列表中获取所有交换分区 ID 和路径

  26. 26

    如何获得具有相同序列号的表中所有元素的列表?

  27. 27

    如何获得我的discord机器人所具有的所有角色的列表?

  28. 28

    在字典列表中,更改特定元素也会更改所有其他元素

  29. 29

    SQL查询以获取在特定条件下具有其他列的重复列值

热门标签

归档