Prüfen, ob Objekt in der ArrayList in Java

Habe ich die folgende Liste der Objekte:

private List<Object> teamlist = new ArrayList<Object>();

Und ich bin hinzufügen von Objekten zur Liste etwa so:

teamlist.add(new MCWarTeam(args[0], joinkey));

Nun die Objekte in der Liste keine Namen haben, kann aber verwiesen werden, indem der Liste, richtig? Bevor ich das hinzufügen eines neuen Elements zu der Liste, wie kann ich überprüfen, ob ein Objekt mit einem bestimmten Attribut bereits vorhanden ist? Dies ist der Konstruktor der Objekte:

public MCWarTeam(String teamname, String joinkey){
    this.teamname = teamname;
    this.joinkey = joinkey;
}

Möchte ich prüfen, ob es schon ein team mit dem Namen Teamnamen. Alternativ gibt es eine bessere Möglichkeit, um zu speichern die Objekte? Vor, ich habe gerade verwendet eine HashMap, fügen Sie den Teamnamen und joinkey und es hat Prima funktioniert, aber dachte, die Verwendung von Objekten statt dessen wäre ein besserer Weg, es zu tun.

Hier ist der wichtige code für die Ereignisprozedur:

        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;
    }

Grundsätzlich, wenn Sie false zurückgibt, bekommt der Benutzer eine Meldung dass die korrekte Verwendung von dem Befehl, den er betrat.

Tun Sie überschreiben equals im MCWarTeam? Wenn dem so ist, verwenden Sie einfach List.contains.
Sie wollen wahrscheinlich geben Sie die Liste, um <MCWarTeam> statt <Object> als gut. Auch ich weiß nicht, wie Sie dachte, dass ein ArrayList ist irgendwie von Natur aus besser als ein HashMap, aber ich hoffe, Sie basiert, auf etwas wirkliches und nicht nur ein Bauchgefühl.
Ist es so schwer zu Lesen Sie die Spezifikation?

InformationsquelleAutor Martin Hoffmann | 2015-10-25

Schreibe einen Kommentar