首页 > 解决方案 > 从一副扑克牌中返回一个流

问题描述

我们考虑以下格式的一副扑克牌:

等级:2、3、4、5、6、7、8、9、T、J、Q、K、A

花色:S - 黑桃,D - 钻石,H - 红心,C - 梅花

每张牌将由 2 个字符标识,例如“3S”(黑桃 3)、“TC”(梅花 10)、“AH”(红心 A)。我想修改该getCardsBySuit方法以返回 aStream以及属于该套装的所有卡片。

例如,对于包含“2H”、“3S”、“TH”且花色为“H”的列表,结果应该是包含“2H”和“TH”的流

public static Stream<String> getCardsBySuit(List<String> cards, char suit) {
    return null;
}

标签: javastringlistcharjava-stream

解决方案


假设卡片中的所有元素至少有 2 个字符并且花色位于第二位。

return cards.stream()
            .filter(s -> s.charAt(1) == suit);

请注意,在使用返回的流时,一旦您应用了任何终端操作,您将无法再次使用相同的流对象。您将不得不再次调用此方法。


推荐阅读