这可能很难解释,但这里有:
我想将3个整数和一个String存储到Hashmap中,因此我可以从地图中检索数据,但事实证明,hashmaps只允许2个通用参数而不是4个。
例如:HashMap <String> <Integer> <Integer> <Integer>
(我想做什么)
但您只能使用2个参数:HashMap <String> <Integer>
。
我最好的猜测是我的想法无法完成,如果是这样,请列出处理此类内容的替代方案。
答案 0 :(得分:14)
创建一个包含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;
}
}
并将此类放入带有String的地图。
HashMap map = new HashMap<String, Triple>();
map.put("keyString", new Triple(new Integer(1),new Integer(2),new Integer(3)));
答案 1 :(得分:3)
您应该创建一个对象来保存该数据,然后将其存储为:HashMap<String, MyObject>
。
此外,这些不是构造函数。它们是泛型。
答案 2 :(得分:3)
您不需要哈希映射来存储4个值。存储3个整数和1个字符串:
public class MyClass {
int a,b,c;
String d;
}
答案 3 :(得分:1)
您可以间接得到答案,例如将三个整数组合成一个字符串
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("_");
然后您可以访问整数值。
答案 4 :(得分:0)
在我看来,您正在尝试将两种不同类型的事物存储为哈希映射中的值。这样做没有问题。只需使用默认构造函数创建哈希映射,然后只使用Object作为值类型。所以new HashMap<String, Object>()
答案 5 :(得分:0)
您可以使用HashMap&lt; TypeOfYourKey,Object&gt;存储任意对象。
答案 6 :(得分:0)
我在同样的问题上挣扎。我最终创建了一个自定义类的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;
}
}