Java, wie kann man auf mehrere Werte einer HashMap zugreifen?

2 Antworten

Nachdem a, b, c als public deklariert sind, kannst du einfach per Punkt-Notation darauf zugreifen. Das heißt:  

Ist x ein Wert vom Typ Item, 

so sind x.a, x.b, x.c die von dir gesuchten Werte.

Sie lassen sich sogar abändern durch Wertzuweisungen der Form 

x.a = neuer_Wert_a ;

x.b = neuer_Wert_b ;

x.c = neuer_Wert_c ;

Mit einer Hashmap hat das alles aber rein gar nichts zu tun. Vielleicht also wolltest du etwas ganz anderes wissen (hast dann aber die Frage nicht richtig gestellt).

ja, du kannst dir alle "keys" und "values" der liste besorgen und diese in Form einer ArrayList durchlaufen und mit entsprechenden gettern auf die attribute zugreifen

Null, wieso besitzt die Var keinen Wert?

Hey, ich habe ein kleines Problem, wollte ein kleines zu Test zwecken Programm schreiben mit Inventar wobei man Gegenstände adden kann, es ist natürlich noch nicht fertig weshalb auch andere Methoden noch nicht Funktionsfäig sind aber das Hauptproblem liegt bei der "addItem(Gegenstand)", hierbei soll ja dann das Item an die nächst freie Stelle eingesetzt werden in den Arraylisten, das Problem ist nur der Name und vermutlich die anderen Variablen haben keinen Wert, es wird eine NullPointException ausgeworfen, aber ich habe diesem Objekt doch die bestimmten Werte gegeben? Kann mir bitte jemand meinen Fehler aufzeigen? Ich brauche auch keinen vollständigen Code, nur die Info was ich ändern müsste.

Die Gegenstand Klasse ist in den Komentaren.

LG

public class Start {

public static void main(String args) { Inventar inv = new Inventar(); Gegenstand gs1 = new Gegenstand("Stein", 50, 10); inv.addItem(gs1); inv.printMaxGewicht(); inv.printGewicht(); inv.printUsedSlots(); inv.printGegenstandInfo("Stein"); } }

import java.util.ArrayList;

public class Inventar {

private int maxGewicht = 50,
            maxSlots = 5;
private ArrayList<String> items = new ArrayList<String>();

private ArrayList<String> names;
private ArrayList<Integer> gewicht;
private ArrayList<Integer> usedSlots;

private Gegenstand[] gse;


public void addItem(Gegenstand gs) {
    int i;
    int tempG = 0;
    int tempSlots = 0;
    
    if(items.isEmpty()) {
        names.add(gs.getName());
        gewicht.add(gs.getGewicht());
        usedSlots.add(0);
    } else {
        for(i = 0; i < items.size(); i++) {
            tempG += gewicht.get(i);
            tempSlots += usedSlots.get(i);
        }
        
        if((tempG + gs.getGewicht() <= maxGewicht) && (tempSlots + 1) <= maxSlots) {
            
            names.add(gs.getName());
            gewicht.add(gs.getGewicht());
            usedSlots.add(i);
            
        }
    }
    
    
    
}

public void printGewicht() {
    int cGewicht = 0;
    for(int i = 0; i < gewicht.size(); i++) {
    cGewicht += gewicht.get(i);  
    }
    System.out.println("Das momentane Gewicht liegt bei " + cGewicht);
}

public void printMaxGewicht() {
    System.out.println("Das Maximal Gewicht liegt bei " + maxGewicht);
}

public void printUsedSlots() {
    int cUsedSlots = 0;
    for(int i = 0; i < usedSlots.size(); i++) {
    cUsedSlots += usedSlots.get(i);
    }
    System.out.println("Es werden momentan " + cUsedSlots + " von " + maxSlots + " genutzt.");
}

public void printGegenstandInfo(Gegenstand gs) {
    
    
            for(int j = 0; j < usedSlots.size(); j++) {
                System.out.println(this.gse[j].getName() + " " + this.gse[j].getGewicht() + " " + this.gse[j] );
            }
        }
        
        public void printGegenstandInfo(String gegenstand) {
            
            for(int i = 0; i < names.size(); i++) {
                if(names.get(i).equalsIgnoreCase(gegenstand)) {
                    i = names.size();
                    
                    for(int j = 0; j < usedSlots.size(); j++) {
                        System.out.println(gse[j].getName() + " " + gse[j].getGewicht() + " " + gse[j] );
                    }
                }
    }       
    
}

}

...zur Frage

C# Variable in anderer Klasse verwenden

Guten Abend,

wie kann ich eine Variable aus einer Klasse in einer anderen Klasse verwenden? Hier mein Quellcode:

 public class Spielfeld
{
    int weite;
    int höhe;

    public void abmessungSpielfeld(int iweite, int ihöhe)
    {
        weite = iweite / 20;
        höhe = ihöhe / 20;
    }
}

public class Snake
{   
    public void neuerPunkt()
    {
        Random r = new Random();
        int zahl1 = r.Next(0, weite);
        int zahl2 = r.Next(0, höhe)
    }
}

Danke schonmal

...zur Frage

Wie sieht die Punktnotation in Java aus oder wie kann ich auf auf andere Klassen zugreifen?

Wie kann ich in der Klasse Telefon die Methoden aus der Klasse Telefonbuch verwenden ? Wenn ich es mit Punktnotation versuche wie z.B.

public void eintrag_hinzufuegen(String name)
{
    Telefonbuch.hinzufuegen(name);
}

, kommt die Fehlermeldung : non static method cannot be referenced from a static context

1)

import java.util.ArrayList;
public class Telefon
{
protected ArrayList <Telefonbuch> telefonbuch;
protected boolean eingeschaltet;
        
        public Telefon()
    {
        // initialise instance variables
        telefonbuch = new ArrayList <Telefonbuch>();
    }
    
    public void anrufen (String name)
    {
    }
    
    public void einschalten()
    {
        eingeschaltet = true;
    }
    
    public void telefonbuch_uebersicht()
    {
        
    }
    
    public void eintrag_hinzufuegen(String name)
    {
    }
    
    public void eintrag_entfernen(String name)
    {
    }
    
    public boolean eintrag_suchen(String name)
    {
    }
}

2)

import java.util.Arrays;

/**
 * Write a description of class Telefonbuch here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Telefonbuch
{
    // instance variables - replace the example below with your own
    private int anzahl_eintrag;
    private int kapazitaet;
    private String[] name_liste;
    protected boolean gefunden;

    /**
     * Constructor for objects of class Telefonbuch
     */
    public Telefonbuch()
    {
        // initialise instance variables
        String [] name_liste = new String[kapazitaet];
        gefunden = false;
    }
    
    public void set_kapazitaet(int x)
    {
        kapazitaet = x;
    }
    
    public void telefonbuch_uebersicht()
    {
        for(int i=0; i < name_liste.length; i++)
        {
        System.out.println(name_liste[i]);
        }
    }
    
    public void hinzufuegen(String name)
    {
        
    }
    
    public void entfernen(String name)
    {
    }
    
    public boolean suchen(String name)
    {
        for(int i=0; i < name_liste.length; i++)
        {
         if(name_liste[i].equals(name))
         {
         gefunden = true;
         }
         else
         {
         //Abbruch
         }
        }
        return gefunden;
    }
}

...zur Frage

Java: Methodenaufruf in einem Object-Array?

Guten Tag,

ich habe ein Spielfeld, welches durch ein Object-Array dargestellt wird. Der Spieler wird durch ein P dargestellt und hat am Anfang die Positionen x und y, welche ich beim Einlesen mit BufferedReader bestimmt habe.

Beispielcode:

abstract class Area {
    public boolean canMove();
}



class A extends Area {
    public boolean canMove() {...}
}



class B extends Area implements InterF {
    public boolean canMove() {...}
    public void trigger() {...}
}



interface InterF {
    public void trigger();
}


class Map {
    Area[][] area;
    ... 
    private void build {
         for (int y = 0; y < area.length; y++){
            for (int x = 0; x < area[y].length; x++) {
                 switch (area[y][x]) {
                    case A: 
                        area[y][x] = new A(); 
                        break;
                    case B: 
                        area[y][x] = new B(); 
                        break;
            }
        }
}

Wenn ich jetzt meinen Spieler in dem Array bewege, wie kann ich wissen, welches Object sich in dem Array-Feld [y][x] befindet (A oder B) und wie kann ich dann die Methode canMove() ausführen und ggf trigger() aus B?

...zur Frage

Hashmap Key <INTEGER> mit int variable vergleichen Aber wie?

ich sitze grad an einer Hashmap in Java und würde gern den Key mit einer int Variable vergleichen Geht das überhaupt so? Beispiel

HashMap FeierTage = new HashMap(); FeierTage.put(13, "13. Tag im Jahr");

int variable = 14;

wie kann ich die beiden jetzt mit einander vergleichen?

Vielen Dank im Vorraus

RD

...zur Frage

Bukkit Plugin bei Minecraft: Was ist eine Hashmap und eine Arraylist?

...zur Frage

Was möchtest Du wissen?