wake-up-neo.com

Hashmap mit verschiedenen Datentypen als Werte für die Instanz Integer, String und Object

Ich muss eine Hashmap mit dem Schlüssel als Ganzzahl erstellen und sollte mehrere Werte verschiedener Datentypen enthalten. Zum Beispiel, wenn der Schlüssel msg id ist und die Werte sind

  1. nachricht vom Typ String 
  2. zeitstempel des Typs Zeit
  3. anzahl des Typs Integer 
  4. version des Typs Ganzzahl 

Wie werden dann die Werte eines anderen Datentyps mit einem einzigen Schlüssel in der Hashmap gespeichert?

38
user2024439

Wenn Sie keine eigene Datenklasse haben, können Sie Ihre Karte wie folgt entwerfen

Map<Integer, Object> map=new HashMap<Integer, Object>(); </ code>

Vergessen Sie hier nicht, den Operator "instanceof" zu verwenden, wenn Sie die Werte aus MAP abrufen.

Wenn Sie eine eigene Datenklasse haben, können Sie Ihre Karte wie folgt entwerfen

Map<Integer, YourClassName> map=new HashMap<Integer, YourClassName>();

import Java.util.Date;
import Java.util.HashMap;
import Java.util.Map;
import Java.util.Set;


public class HashMapTest {
public static void main(String[] args) {
    Map<Integer,Demo> map=new HashMap<Integer, Demo>();
    Demo d1= new Demo(1,"hi",new Date(),1,1);
    Demo d2= new Demo(2,"this",new Date(),2,1);
    Demo d3= new Demo(3,"is",new Date(),3,1);
    Demo d4= new Demo(4,"mytest",new Date(),4,1);
    //adding values to map
    map.put(d1.getKey(), d1);
    map.put(d2.getKey(), d2);
    map.put(d3.getKey(), d3);
    map.put(d4.getKey(), d4);
    //retrieving values from map
    Set<Integer> keySet= map.keySet();
    for(int i:keySet){
        System.out.println(map.get(i));
    }
    //searching key on map
    System.out.println(map.containsKey(d1.getKey()));
    //searching value on map
    System.out.println(map.containsValue(d1));
}

}
class Demo{
    private int key;
    private String message;
    private Date time;
    private int count;
    private int version;

    public Demo(int key,String message, Date time, int count, int version){
        this.key=key;
        this.message = message;
        this.time = time;
        this.count = count;
        this.version = version;
    }
    public String getMessage() {
        return message;
    }
    public Date getTime() {
        return time;
    }
    public int getCount() {
        return count;
    }
    public int getVersion() {
        return version;
    }
    public int getKey() {
        return key;
    }
    @Override
    public String toString() {
        return "Demo [message=" + message + ", time=" + time
                + ", count=" + count + ", version=" + version + "]";
    }

}
42

Sie haben einige Variablen, die sich in der Java-Sprache unterscheiden:

 message of type string
 timestamp of type time
 count of type integer
 version of type integer

Wenn Sie eine HashMap verwenden, wie:

HashMap<String,Object> yourHash = new HashMap<String,Object>();
yourHash.put("message","message");
yourHash.put("timestamp",timestamp);
yourHash.put("count ",count);
yourHash.put("version ",version);

Wenn Sie die yourHash verwenden möchten:

for(String key : yourHash.keySet()){
  String message = (String) yourHash.get(key);
  Datetime timestamp= (Datetime) yourHash.get(key);
  int timestamp= (int) yourHash.get(key);
}
20
user2567978

Definieren Sie eine Klasse, um Ihre Daten zuerst zu speichern

public class YourDataClass {

    private String messageType;
    private Timestamp timestamp;
    private int count;
    private int version;

    // your get/setters
    ...........
}

Und dann initialisieren Sie Ihre Karte:

Map<Integer, YourDataClass> map = new HashMap<Integer, YourDataClass>();
15
Drogba

Erstellen Sie ein Objekt, das folgende Eigenschaften mit einem entsprechenden Namen enthält.

  1. botschaft 
  2. zeitstempel
  3. anzahl
  4. ausführung

und verwenden Sie dies als Wert in Ihrer Karte.

Berücksichtigen Sie auch das Überschreiben der equals () und hashCode () - Methode, wenn Sie nicht möchten, dass die Objektgleichheit zum Vergleich verwendet wird (z. B. beim Einfügen von Werten in Ihre Map).

4
Will

Mach einfach wie unten ...

HashMap<String,Object> yourHash = new HashMap<String,Object>();
yourHash.put(yourKey+"message","message");
yourHash.put(yourKey+"timestamp",timestamp);
yourHash.put(yourKey+"count ",count);
yourHash.put(yourKey+"version ",version);

typecast den Wert, während Sie zurückkehren . Für ex: 

    int count = Integer.parseInt(yourHash.get(yourKey+"count"));
//or
int count = Integer.valueOf(yourHash.get(yourKey+"count"));
//or
int count = (Integer)yourHash.get(yourKey+"count"); //or (int)
0
Naveen