我有一个hashmap,它将一个键存储为String,一个Integer存储为Value。
HashMap<String, Integer> Items;
我想在此存储多个数据类型,如果Hashmap的所有值元素具有相同的数据类型,我查找的内容只能解决问题。
无论如何在Hashmap中都有多种数据类型,如此
HashMap<String, Integer, BigDecimal, Date> items;
我知道可以将这些数据类型之一的多个值存储为arraylist,但仍然只允许我选择一种数据类型。
我可以使用另一个允许存储多种数据类型的集合吗?
由于
答案 0 :(得分:0)
您可以使用要存储的所有类型的超类。如果您想存储不同类型的数字,例如可以
HashMap<String, Number> items;
您可以使用以下方式一直到Object
:
HashMap<String, Object> items;
允许你在那里存储任何东西。
但是,根据您正在做的事情,这可能会因instanceof
检查和投射的必要性而对性能产生负面影响。
答案 1 :(得分:0)
将这些数据类型包装到一个覆盖hashCode
和equals
的类中。 (我把它作为读者的练习。)
public class Amalgam {
private Integer field1;
private BigDecimal field2;
private Date field3;
}
然后你可以直接使用Map
。
Map<String, Amalgam> items = new HashMap<>();
答案 2 :(得分:-2)
试试这个,
HashMap<String, Object> items;
但是在检索项目时必须小心