IF-ELSEIF链到Hashmap逻辑

时间:2019-01-30 15:55:09

标签: java

我正在尝试根据arrayList中的用户数量来获得奖励。

我想使其更加灵活的想法是Hashmap

但是我正在寻找使它起作用的想法。

int amountWin = 0;
if(participants.size() >= 10){
    amountWin += 100;
} else if(participants.size() >= 5){
    amountWin += 50;
}
HashMap<Integer, Integer> bonus = new HashMap<>();
bonus.put(10, 100);
bonus.put(5, 50);

2 个答案:

答案 0 :(得分:0)

您可以这样操作:

HashMap<Integer, Integer> participantsByBonus = new HashMap<>();
participantsByBonus.put(10, 100);
participantsByBonus.put(5, 50);

int amountWin = 0;
int bonus = participantsByBonus.keySet().stream()
                               .filter(participants -> participants >= participants.size)
                               .min(Integer::compareTo)
                               .map(participantsByBonus::get)
                               .orElse(0);

amountWin += bonus;

filter(participants -> participants >= participants.size())查找所有大于keys的{​​{1}},而participants将选择最小值。

如果参与者人数很少,您将不会获得任何奖金(min())。

答案 1 :(得分:0)

普通#include <iostream> #include <sstream> #include <string> int main() { std::string line, word; std::getline(std::cin, line); std::istringstream iss(line); while (iss >> word) { // use word as needed... } return 0; } 不提供任何排序​​保证。对于这样的查询,像Map这样的NavigableMap会完全满足您的需求。

TreeMap