У меня есть следующий список предметов:Проверьте объект существует в ArrayList в Java
private List<Object> teamlist = new ArrayList<Object>();
И я добавление объектов в список следующим образом:
teamlist.add(new MCWarTeam(args[0], joinkey));
Теперь объекты в список не имеют имени, но на него можно ссылаться, используя список, не так ли? Прежде чем добавить новый элемент в список, как проверить, существует ли объект с определенным атрибутом? Это конструктор из объектов:
public MCWarTeam(String teamname, String joinkey){
this.teamname = teamname;
this.joinkey = joinkey;
}
Я хочу, чтобы проверить, если уже есть команда с именем teamname. Кроме того, существует ли лучший способ хранения объектов? Раньше я просто использовал HashMap, чтобы добавить имя команды и joinkey, и это сработало отлично, но, используя объекты, вместо этого было бы лучшим способом сделать это.
Вот важный код для обработчика событий:
else if (cmd.getName().equalsIgnoreCase("createTeam")) {
if (args.length > 0 && args.length < 3) {
String joinkey = "";
if (args.length > 1)
joinkey = args[1];
String teamname = args[0];
MCWarTeam newTeam = new MCWarTeam(teamname, joinkey);
if (!teamlist.containsKey(teamname)) {
teamlist.put(teamname, newTeam);
sender.sendMessage("Created new team \"" + teamname + "\" with join key \"" + joinkey + "\" successfully! Teams:");
sender.sendMessage("All teams:");
for (String key : teamlist.keySet()) {
sender.sendMessage(key);
}
} else
sender.sendMessage("Team already exists!");
return true;
}
return false;
}
else if (cmd.getName().equalsIgnoreCase("joinTeam")) {
if (args.length > 0 && args.length < 3) {
String joinkey = "";
if (args.length > 1)
joinkey = args[1];
String teamname = args[0];
if (teamlist.containsKey(teamname)) {
String teamKey = teamlist.get(teamname).getJoinKey();
if (joinkey == teamKey) {
teamlist.get(teamname).addPlayer(playername);
Bukkit.broadcastMessage("MCWar: " + playername + " joined Team \"" + teamname + "\" successfully!");
} else
sender.sendMessage("Join key incorrect!");
} else {
sender.sendMessage("Team doesn't exist! Teams:");
for (String key : teamlist.keySet()) {
sender.sendMessage(key);
}
}
return true;
}
return false;
}
В принципе, если она возвращает ложь, то пользователь получит сообщение, описывающее правильное использование команды он вошел.
Вы переопределяете 'equals' в MCWarTeam? Если это так, просто используйте 'List.contains'. –
Вы, вероятно, хотите ввести список в '' вместо'
Трудно ли прочитать [спецификацию] (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html)? –