Java 有没有办法实现LinkedHashMap数组?
我正在尝试实现LinkedHashMap的数组,但我不知道这是否可能 目前,我的代码如下所示:Java 有没有办法实现LinkedHashMap数组?,java,nullpointerexception,linkedhashmap,Java,Nullpointerexception,Linkedhashmap,我正在尝试实现LinkedHashMap的数组,但我不知道这是否可能 目前,我的代码如下所示: public class LHMap { public static void main(String[] args) { LinkedHashMap<String, Integer>[] map = null; for (int i = 0; i < 5; i++) { map[i] = new LinkedHashMap<Str
public class LHMap {
public static void main(String[] args) {
LinkedHashMap<String, Integer>[] map = null;
for (int i = 0; i < 5; i++) {
map[i] = new LinkedHashMap<String, Integer>();
}
map[0].put("a", 0);
System.out.println(map[0].get("a"));
}
}
公共类映射{
公共静态void main(字符串[]args){
LinkedHashMap[]map=null;
对于(int i=0;i<5;i++){
map[i]=新LinkedHashMap();
}
映射[0]。放置(“a”,0);
System.out.println(映射[0].get(“a”);
}
}
System.out.println(提取(映射)[0].get(“a”);
返回一个“NullPointerException”
你知道如何实现这一点吗
编辑:1。删除提取的(),2。table->array我不知道您的
extracted()
方法试图做什么。您将获得一个NullPointerException
,因为您将map
传递到extracted
中,然后立即返回它。在您的示例中,传入null
,然后返回它。在空数组中找不到第i个下标(或任何下标)
用列表取代LinkedHashMap的数组
,行得通吗
List<Map<String, Integer>> listOfMaps = new ArrayList<Map<String, Integer>>();
for(int i = 0; i < 5; i++) {
listOfMaps.add(new LinkedHashMap<String, Integer>());
}
listOfMaps.get(0).put("a", 0);
System.out.println(listOfMaps.get(0).get("a"));
List listofmap=new ArrayList();
对于(int i=0;i<5;i++){
添加(新LinkedHashMap());
}
获取(0).put(“a”,0);
System.out.println(listofmap.get(0.get(“a”));
编辑
顺便说一下,不能用泛型实例化数组。如果你想要类型安全的话,我建议你选择这个列表。否则,您将不得不将就:
LinkedHashMap<String, Integer>[] map = new LinkedHashMap[5];
LinkedHashMap[]map=新建LinkedHashMap[5];
但是,这会给您带来警告。map[i]=newlinkedhashmap();
map[i] = new LinkedHashMap<String, Integer>();
这将导致NPE,因为您从未初始化映射,或者更确切地说,您显式地将其初始化为NULL:
LinkedHashMap<String, Integer>[] map = null;
LinkedHashMap[]map=null;
编辑:
您需要实例化数组,例如:
map = (LinkedHashMap<String, Integer>[]) new LinkedHashMap[5];
map=(LinkedHashMap[])新建LinkedHashMap[5];
虽然你会得到一个“未经检查的转换”警告与该代码。还要检查通用数组创建问题(感谢那些指出它的人)。你说的“做一个表”是什么意思?extracted()
方法的意义是什么?@BalusC:我认为OP的意思是“使用一个数组…”@BalusC:这不是表而是数组。你不能在for循环中使用System.out.println吗?如果您真的想创建一个表,我建议您不要将其提取为一个映射,而是将其生成一个字符串[][]。我正在使用Eclipse,当我实例化数组时,它会返回一个错误:“无法创建LinkedHashMapy的通用数组”-1此代码不会编译。不能用泛型实例化数组。您将得到一个编译时错误泛型数组创建
。这是如何得到支持的?这个答案是错误的。你不能用泛型实例化数组。这个解决方案工作得很好,但它不是“ArrayList listOfMaps”而不是“List listOfMaps”吗?Michaël,最好用接口而不是具体的实现来键入对象(你不必以这种方式绑定到特定的实现,这给了你松耦合的优势)<代码>列表
和映射
是接口。查看此链接了解更多详细信息:也发现了此问题,谢谢您的链接、答案和评论。现在我明白了为什么我必须实现List,但是Eclipse在实现中返回了一个错误:“类型List不是泛型的;它不能用参数参数化”;如果您使用的是java.util.List
,则不会。我测试了代码并编译了。我的错。。。我导入了“java.awt.List”,非常感谢!
map = (LinkedHashMap<String, Integer>[]) new LinkedHashMap[5];