web-dev-qa-db-fra.com

Hashmap contenant différents types de données sous forme de valeurs, par exemple Integer, String et Object

J'ai besoin de créer un hashmap avec key en entier et il devrait contenir plusieurs valeurs de types de données différents. Par exemple, si la clé est msg id et que les valeurs sont

  1. message de type chaîne 
  2. horodatage du type heure
  3. nombre de type entier 
  4. version de type entier 

Alors, comment stocker les valeurs de différents types de données avec une seule clé dans la table de hachage?

38
user2024439

Vous avez certaines variables qui sont de types différents en langage Java comme celui-ci:

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

Si vous utilisez un HashMap comme:

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

Si vous voulez utiliser le yourHash:

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

Définissez une classe pour stocker vos données en premier

public class YourDataClass {

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

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

Et puis initialisez votre carte:

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

Créez un objet contenant les propriétés suivantes avec un nom approprié.

  1. message 
  2. horodatage
  3. compter
  4. version

et l'utiliser comme une valeur dans votre carte.

Pensez également à remplacer les méthodes equals () et hashCode () si vous ne souhaitez pas que l'égalité d'objet soit utilisée pour la comparaison (par exemple, lors de l'insertion de valeurs dans votre carte).

4
Will

Faites simplement comme ci-dessous ....

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

dactylographier la valeur tout en revenant . Pour 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