从一副扑克牌中返回一个流

问题描述

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

排名:2,3,4,5,6,7,8,9,T,J,Q,K,A

西装:S - 黑桃,D - 钻石,H - 心,C - 俱乐部

每张卡片都由 2 个字符标识 例如。 “3S”(黑桃 3)、“TC”(俱乐部的 10)、“AH”(心之王牌)。我想修改 getCardsBySuit 方法,以便返回一个 Stream 以及属于该花色的所有牌。

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

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

解决方法

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

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

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