Подтвердить что ты не робот

Hashmap, содержащий разные типы данных в качестве значений, например Integer, String и Object

Мне нужно создать хэш-карту с ключом как целое, и она должна содержать несколько значений разных типов данных. Например, если ключ является msg id и значения

  • сообщение строки типа
  • временная метка типа времени
  • число целых чисел
  • версия типа integer

Затем, как сохранить значения разных типов данных с помощью одного ключа в хэш-карту?

4b9b3361

Ответ 1

Если у вас нет собственного класса данных, вы можете создать свою карту следующим образом

Map<Integer, Object> map=new HashMap<Integer, Object>();
код >

Здесь не забудьте использовать оператор "instanceof" при извлечении значений из MAP.

Если у вас есть собственный класс данных, тогда вы можете создать свою карту следующим образом

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 + "]";
    }

}

Ответ 2

У вас есть некоторые переменные, которые являются разными типами на языке Java:

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

Если вы используете HashMap, например:

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

Если вы хотите использовать yourHash:

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

Ответ 3

Определите класс для хранения ваших данных сначала

public class YourDataClass {

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

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

И затем инициализируйте свою карту:

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

Ответ 4

Создайте объект, содержащий следующие свойства с соответствующим именем.

  • сообщение
  • Отметка времени
  • Количество
  • версия

и использовать это как значение на вашей карте.

Также рассмотрите возможность переопределения методов equals() и hashCode(), если вы не хотите, чтобы для сравнения использовалось равенство по объекту (например, при вставке значений в вашу карту).

Ответ 5

Делай просто как ниже....

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

введите значение при возвращении. Например:

    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)