Java 有没有办法实现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

我正在尝试实现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<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];