使用集合从数组返回唯一字符串?

时间:2017-04-09 19:25:06

标签: android

我试图从7个字符串的数组中返回一个“唯一”字符串。它们将被存储到数据库中并需要随机分配,因此我使用Collections.shuffle来获取随机的不同字符串,或者我认为。

以下是我正在使用的内容:

    public String RandomNumber()  {
    List<String> roles = Arrays.asList("Mafia", "Mafia", "Civilian", "Civilian", "Civilian", "Civilian", "Civilian");
    Collections.shuffle(roles);
    return roles.get(0);
}

我希望确实有2个黑手党,还有5个平民,但我正在重复。那是为什么?

(另外,我计划让不同数量的玩家不同于7,如果有人可以根据玩家数量分配角色(例如每3个人),我可以向正确的方向发展平民,有1个黑手党)

2 个答案:

答案 0 :(得分:0)

你可以试试这个

 public String RandomNumber()  {
    List<String> roles = Arrays.asList("Mafia", "Mafia", "Civilian", "Civilian", "Civilian", "Civilian", "Civilian");

    TreeSet treeset = new TreeSet();
    treeset.addAll(roles);

    roles = new ArrayList<>();
    for (Iterator it = treeset.iterator(); it.hasNext();) {
        Object i = it.next();
        roles.add((String) i);
    }

    Collections.shuffle(roles);
    return roles.get(0);
}

答案 1 :(得分:0)

你可以在获得后将其删除。像这样的Smth:

public String RandomNumber()  {
    List<String> roles = new ArrayList<>(Arrays.asList("Mafia", "Mafia", "Civilian", "Civilian", "Civilian", "Civilian", "Civilian"));
    Collections.shuffle(roles);
    String role = roles.get(0);
    roles.remove(0);
    return role;
}