当前位置: 首页 > 知识库问答 >
问题:

Hashmap将不同的数据类型保存为整数、字符串和对象的值

葛安和
2023-03-14

我需要创建一个键为整数的哈希图,它应该包含不同数据类型的多个值。例如,如果键是msg-id,值为

  1. 字符串类型的消息
  2. 时间类型的时间戳
  3. 整数类型的计数
  4. 整数类型的版本

那么如何用一个键将不同数据类型的值存储到hashmap中呢?

共有3个答案

孟胤
2023-03-14

首先定义一个类来存储您的数据

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>();
王凌
2023-03-14

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

如果你想使用你的哈希:

for(String key : yourHash.keySet()){
  String message = (String) yourHash.get(key);
  Datetime timestamp= (Datetime) yourHash.get(key);
  int timestamp= (int) yourHash.get(key);
}
戚勇
2023-03-14

如果您没有自己的数据类,则可以按如下方式设计地图

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

在这里,从MAP检索值时不要忘记使用“instanceof”运算符。

如果您有自己的数据类,那么您可以设计您的地图如下

地图

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 + 3求和为5,当“添加”到字符串结果为时,将其加到1时,再加上1,结果是:

  • 问题内容: 我试图从返回的字符串转换成。Go中惯用的方式是什么? 问题答案: 例如,

  • 问题内容: 我正在从在Varchar中具有原始提要的表中导入数据,我需要将varchar中的列导入到字符串列中。我尝试使用以及,但是却遇到了错误,因为有一些空字段,我需要将它们作为空或null检索到新表中。 请让我知道是否有相同的功能。 问题答案: 大胆猜测:如果您的值是一个空字符串,则可以使用NULLIF将其替换为NULL:

  • 在我的模式文件中,我试图将类型属性设置为数组。正如这里所见 尽管出于某种原因,当我试图保存文档时,它会将文档保存为字符串,即使它是数组中的元素,它仍会返回字符串。这是我保存文档的代码; 这是在网站中查看的猫鼬模式https://i.stack.imgur.com/TACoo.png 我在mongoose方面不是最棒的,但是,我确信有些事情发生了,但是我没有将文档保存到任何其他地方,而是仍然保存一个

  • 显示字符串: 先看看下面这几行语句在RGSS中的效果: p "这将会显示双引号" p '这也会显示双引号' print "这不会显示双引号" print '这也不会显示双引号' 把上面的四行语句复制下来,然后在我们刚刚建立好的Test脚本中粘贴,粘贴前最好把Test脚本的内容清除掉,我们只需要测试我们现在的代码。好,运行游戏,看看效果吧。 首先,看得出来,用来输出显示的方法又多了一种:print