use*_*439 45 java types hashmap
我需要使用key作为整数创建一个hashmap,它应该包含不同数据类型的多个值.例如,如果键是msg id且值是
那么如何使用单个键将不同数据类型的值存储到hashmap中?
小智 45
如果您没有自己的数据类,则可以按如下方式设计地图
Map<Integer, Object> map=new HashMap<Integer, Object>();
Run Code Online (Sandbox Code Playgroud)
这里不要忘记在从MAP中检索值时使用"instanceof"运算符.
如果您有自己的Data类,那么您可以按如下方式设计地图
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 + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
小智 23
你有一些Java语言中不同类型的变量:
message of type string
timestamp of type time
count of type integer
version of type integer
Run Code Online (Sandbox Code Playgroud)
如果您使用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);
Run Code Online (Sandbox Code Playgroud)
如果你想使用你的哈希:
for(String key : yourHash.keySet()){
String message = (String) yourHash.get(key);
Datetime timestamp= (Datetime) yourHash.get(key);
int timestamp= (int) yourHash.get(key);
}
Run Code Online (Sandbox Code Playgroud)
Dro*_*gba 18
定义一个类来存储您的数据
public class YourDataClass {
private String messageType;
private Timestamp timestamp;
private int count;
private int version;
// your get/setters
...........
}
Run Code Online (Sandbox Code Playgroud)
然后初始化你的地图:
Map<Integer, YourDataClass> map = new HashMap<Integer, YourDataClass>();
Run Code Online (Sandbox Code Playgroud)
创建一个具有以下属性的对象,并使用适当的名称。
并将其用作地图中的值。
如果您不希望将对象相等性用于比较(例如,将值插入到地图中),也可以考虑相应地覆盖equals()和hashCode()方法。
归档时间: |
|
查看次数: |
88933 次 |
最近记录: |