小编Art*_*ūrs的帖子

计算具有相同属性值的对象

我正在创建一个扑克排名求解器,我必须在一组牌中计算具有相同套装或同等级别的牌.HashMap如果集合中有多个排名,我在这里创建并增加值.

private boolean isFourOfAKind() {
        Map<RANK, Integer> rankDuplicates = new HashMap<>();
        for(Card card : cards) {
            rankDuplicates.put(card.getRank(), rankDuplicates.getOrDefault(card.getRank(), 0) + 1);
        }
        return rankDuplicates.containsValue(4);
    }
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能使用流与java流完全相同的事情.它看起来像这样:

    private boolean isFourOfAKind() {
        Map<RANK, Integer> rankDuplicates = cards.stream()
            .map(Card::getRank)
            .collect(Collectors.toMap(/*...something goes here..*/)); // of course this is very wrong, but you can see what I'm aiming at.
        return rankDuplicates.containsValue(4);
    }
Run Code Online (Sandbox Code Playgroud)

java hashmap java-8 java-stream

9
推荐指数
2
解决办法
1373
查看次数

调用对象方法并使用函数api返回相同的对象

目前我有:

cardLabels = cards.stream()
            .map(ImageSupplier::getCard)
            .map(JLabel::new)
            .collect(toList());

cardLabels.stream().forEach(container::add);
Run Code Online (Sandbox Code Playgroud)

我可以写lambda表达式:

.map(c ->{ 
  JLabel label = new JLabel(c);
  container.add(label);
  return label;
 })
Run Code Online (Sandbox Code Playgroud)

但似乎很长.有什么东西我可以调用就像.doStuff(container::add)返回流JLabel吗?

java java-8 java-stream

3
推荐指数
1
解决办法
136
查看次数

标签 统计

java ×2

java-8 ×2

java-stream ×2

hashmap ×1