当前位置: 首页 > 知识库问答 >
问题:

筛选具有共同特征的对象

司宏伯
2023-03-14

我需要找到我的集合是否包含相同或超过5个元素的公共变量,并找到这些元素。我这样做:

        cards.stream().filter(card -> cards.stream().filter(card1 -> card.getSuit() == card1.getSuit()).count() >= CombinationConstant.CARD_COUNT)
                .collect(Collectors.toList());

但是你认为把另一个流放进去过滤是不好的做法。

共有1个答案

张和豫
2023-03-14

我不知道它是否比你的实现效率高。但这是方法之一:

List<String> cards = List.of("a","b","aa","bb","cc");
int CARD_COUNT = 3;
    
Map<Integer, Long> counted = cards.stream()
    .collect(Collectors.groupingBy((String i)-> i.length() , Collectors.counting()));
System.out.println("all counted: " + counted);
        
Map<Integer, Long> result = counted.entrySet().stream()
    .filter(k -> counted.get(k.getKey()) >= CARD_COUNT)
    .collect(Collectors.toMap(x -> x.getKey(), x1 -> x1.getValue()));;
System.out.println("filtered " + result);

输出:

all counted: {1=2, 2=3}
filtered {2=3}
 类似资料:
  • 我有一个特点和扩展它的对象。 我想创建这个对象的列表并映射到上面: 以及实现Poly函数的不同尝试: 编译器告诉我: 错误:(45,43)找不到参数映射器的隐式值:无形状。ops。hlist。映射器[com.test.EncodePoly.type,com.test.A.type::com.test.B.type::com.test.C.type::shapeless.HNil]val结果:Lis

  • 问题内容: 我需要采取目前的hql: 并将其更改为 我的问题是与distinct关键字有关。它在使用新的Object查询类型的hql查询中属于什么位置。一种想法是使用子选择,让我与众不同。我试过添加,但不起作用。 问题答案: 好的,对感兴趣的人来说,正确的语法是

  • 问题内容: 我想筛选一个像这样的选择: 编辑:添加列模型: 列用于多种用途,并且为了优化我的代码,我需要将其也包含在Select中,但没有类型为“字段”或“映射”的条目 但是,我可以从所有内容中进行选择,甚至包括类型为“字段”和“地图”的条目。有没有一种清洁的方法? 问题答案: AngularJS NOT过滤器 小提琴 从 文档 : “ …谓词可以通过在字符串前面加上!来取反。” “模式对象可用于

  • 特征选择在于选取对训练集有分类能力的特征,这样可以提高决策树学习的效率。 通常特征选择的准则是信息增益或信息增益比。 信息增益 信息增益(information gain)表示得知特征$$X$$的信息而使得类$$Y$$的信息不确定性减少称。 特征$$A$$对训练数据集$$D$$的信息增益$$g(D,A)$$,定义为集合$$D$$的经验熵$$H(D)$$与特征$$A$$在给定条件下$$D$$的经验条

  • 看看这个代码。 愚蠢的Scala编译器在这里显示错误: 错误:(22, 39) 类型不匹配;找到: mix.type (底层类型 SomeMix) 必需: T with SomeMix 大小写混合: SomeMix = 它不理解表达式I匹配到在某种混合已经是类型T。好吧,让我们帮助他。更改代码: 现在,它同意一切都是正确的,但显示警告: 警告:(22,17)抽象类型模式T未选中,因为它已通过擦除大

  •   RFormula通过一个R model formula选择一个特定的列。 目前我们支持R算子的一个受限的子集,包括~,.,:,+,-。这些基本的算子是: ~ 分开target和terms + 连接term,+ 0表示删除截距(intercept) - 删除term,- 1表示删除截距 : 交集 . 除了target之外的所有列   假设a和b是double列,我们用下面简单的例子来证明RFor