Java-hashmap可以有4个通用参数而不是2个?
这可能很难解释,但下面是: 我想将3个整数和一个字符串存储到Hashmap中,这样我就可以从映射中检索数据,但结果表明Hashmap只允许2个通用参数,而不是4个 例如:Java-hashmap可以有4个通用参数而不是2个?,java,hash,hashmap,Java,Hash,Hashmap,这可能很难解释,但下面是: 我想将3个整数和一个字符串存储到Hashmap中,这样我就可以从映射中检索数据,但结果表明Hashmap只允许2个通用参数,而不是4个 例如:HashMap(我想做的事情) 但您只能使用两个参数,就像它看起来的那样:HashMap 我最好的猜测是,我的想法无法实现,如果是这样,请列出处理类似内容的替代方案。您应该创建一个对象来保存该数据,然后像这样存储:HashMap 而且,这些不是构造函数。它们是泛型。创建一个新类,其中包含3个Integer或int class T
HashMap
(我想做的事情)
但您只能使用两个参数,就像它看起来的那样:HashMap
我最好的猜测是,我的想法无法实现,如果是这样,请列出处理类似内容的替代方案。您应该创建一个对象来保存该数据,然后像这样存储:
HashMap
而且,这些不是构造函数。它们是泛型。创建一个新类,其中包含3个
Integer
或int
class Triple {
Integer i;
Integer j;
Integer k;
Triple(Integer i,Integer j, Integer k) {
this.i = i;
this.j = j;
this.k = k;
}
}
并将该类放入带有字符串的映射中
HashMap map = new HashMap<String, Triple>();
map.put("keyString", new Triple(new Integer(1),new Integer(2),new Integer(3)));
HashMap map=newhashmap();
put(“键串”、新三元组(新整数(1)、新整数(2)、新整数(3));
在我看来,您正在尝试将两种不同类型的内容作为值存储在哈希映射中。这样做没有问题。只需使用默认构造函数创建哈希映射,然后使用Object作为值类型。因此newhashmap()
您可以间接获得答案,就像将三个整数组合成一个字符串
int val1=1;
int val2=2;
int val3=3;
Map<String,String> test = new HashMap<String,String>();
test.put("key1", val1+"_"+val2+"_"+val3);
when you wan to get the values, int[] rst = test.get("key1).split("_");
int-val1=1;
int-val2=2;
int val3=3;
Map test=newhashmap();
测试。输入(“键1”,val1+“”+val2+“”+val3);
当您想要获取这些值时,int[]rst=test.get(“key1.split”(“”);
然后您可以访问整数值。您可以使用HashMap
public class MyClass {
int a,b,c;
String d;
}
我也遇到了同样的问题。我最终创建了一个自定义类的hashmap。这完全有效,允许我在类中放置我想要的任何属性,并以编程方式为任何项提取这些属性。下面是完整的示例
public class Test1 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addview);
//create the data mapping
HashMap<Integer, myClass> hm = new HashMap<Integer, myClass>();
hm.put(1, new myClass("Car", "Small", 3000));
hm.put(2, new myClass("Truck", "Large", 4000));
hm.put(3, new myClass("Motorcycle", "Small", 1000));
//pull the datastring back for a specific item.
//also can edit the data using the set methods. this just shows getting it for display.
myClass test1 = hm.get(1);
String testitem = test1.getItem();
int testprice = test1.getPrice();
Log.i("Class Info Example",testitem+Integer.toString(testprice));
}
}
class myClass{
private String item;
private String type;
private int price;
public myClass(String itm, String ty, int pr){
this.item = itm;
this.price = pr;
this.type = ty;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public String getType() {
return item;
}
public void setType(String type) {
this.type = type;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
公共类Test1{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.addview);
//创建数据映射
HashMap hm=新的HashMap();
hm.put(1,新myClass(“汽车”,“小型”,3000));
hm.put(2,新myClass(“卡车”,“大型”,4000));
hm.put(3,新myClass(“摩托车”,“小型”,1000));
//将特定项的数据字符串向后拉。
//也可以使用set方法编辑数据。这只是显示如何获取数据以供显示。
myClass test1=hm.get(1);
字符串testitem=test1.getItem();
int testprice=test1.getPrice();
Log.i(“类信息示例”,testitem+Integer.toString(testprice));
}
}
类myClass{
私有字符串项;
私有字符串类型;
私人int价格;
公共myClass(字符串itm、字符串ty、整数pr){
本项目=itm;
这个价格=pr;
this.type=ty;
}
公共字符串getItem(){
退货项目;
}
公共void集合项(字符串项){
this.item=项目;
}
公共字符串getType(){
退货项目;
}
公共void集合类型(字符串类型){
this.type=type;
}
public int getPrice(){
退货价格;
}
公共无效设置价格(整数价格){
这个价格=价格;
}
}
您到底想映射什么?字符串到所有整数?为了澄清,您引用了HashMap的通用参数,其中有两个,K和V。但是实际上有4个构造函数。使用上面提到的方法,您如何获取keySet?System.out.println(map.values())的值将打印出类似于这个utils的内容。Triple@5e1fc2aamap.values()
为您提供一个集合
。对于每个三元组,您可以直接访问i、j、k
,也可以提供一个getter方法。如果要打印三元组
,可以覆盖公共字符串toString()
方法。