【发布时间】:2017-08-17 23:43:24
【问题描述】:
我已经看到了一些关于 hashMaps 的东西,但是我们的工作还没有走到那一步。请让您的答案和有用的建议尽可能简单。
我有一个自定义数据类型,它已经被制作并且可以完美地工作,称为颜色。该类型的唯一值是 Color.BLUE、Color.RED、Color.YELLOW 和 Color.GREEN。
如果列表中的 Color.BLUE 多于其他颜色,我的任务是返回 Color.BLUE,如果列表中的 Color.RED 多于其他颜色,则返回 Color.RED,Color.GREEN 相同和 Color.YELLOW。
我已经研究并想出了这个代码:
public Color callColor(List<Card> hand) {
int blueCards = Collections.frequency(hand, Color.BLUE);
int redCards = Collections.frequency(hand, Color.RED);
int greenCards = Collections.frequency(hand, Color.GREEN);
int yellowCards = Collections.frequency(hand, Color.YELLOW);
Color changeColorTo = Color.NONE;
if ((blueCards > redCards) || (blueCards > greenCards) || (blueCards > yellowCards)) {
changeColorTo = Color.BLUE;
}
if ((redCards > blueCards) || (redCards > greenCards) || (redCards > yellowCards)) {
changeColorTo = Color.RED;
}
if ((greenCards > redCards) || (greenCards > blueCards) || (greenCards > yellowCards)) {
changeColorTo = Color.GREEN;
}
if ((yellowCards > redCards) || (yellowCards > greenCards) || (yellowCards > blueCards)) {
changeColorTo = Color.YELLOW;
}
return changeColorTo;
}
但是这段代码导致 blueCards、redCards、greenCards 和 YellowCards 都为 0,而它们绝对不应该为零。
因此,在这种情况下,我的 Collections 实现根本不起作用。救命!
【问题讨论】:
-
List<Card> hand做得怎么样? -
@Sanjeev 我不确定。这部分代码是为我们提供的。
-
可以发
Color类的代码吗? -
使用
switch并自己计算频率。 -
@hattic 遍历您的列表并将卡片的颜色与您拥有的各个颜色匹配
标签: java list collections frequency