List<Map<String, Object>> pcList = null;
Map<String, Object> pcMap = new HashMap<String, Object>();
ComputerConfigurations tempPC = null;
if (historyList != null) {
Iterator<ComputerConfigurations> iterator = historyList.iterator();
while (iterator.hasNext()) {
tempPC = (ComputerConfigurations) iterator.next();
pcMap.put(tempPC.getEnvironment(), tempPC);
pcList.add((Map<String, Object>) pcMap);
}
}
我在pcList.add((Map<String, Object>)pcMap);
行上获得空指针异常。 [Servlet Error]-: java.lang.NullPointerException
。有什么建议吗?
答案 0 :(得分:4)
在Java中,只是通过向他们添加内容,收藏品不会神奇地存在。您必须先创建空集合来初始化pcList
:
List<Map<String, Object>> pcList = new ArrayList<>();
空集合与null
不同。空集合实际上是一个集合,但它还没有任何元素。 null
表示根本不存在任何集合。
请注意,对象不能是List
类型,因为它是一个接口;因此,你必须告诉Java你真正需要什么样的List
(例如ArrayList
,如上所示,或LinkedList
,或其他一些类实现List
)。
答案 1 :(得分:0)
您在任何时候都没有初始化pcList
。试试这个:
final List<Map<String, Object>> pcList = new LinkedList<>();
Map<String, Object> pcMap = new HashMap<String, Object>();
ComputerConfigurations tempPC = null;
if (historyList != null) {
Iterator<ComputerConfigurations> iterator = historyList.iterator();
while (iterator.hasNext()) {
tempPC = (ComputerConfigurations) iterator.next();
pcMap.put(tempPC.getEnvironment(), tempPC);
pcList.add((Map<String, Object>) pcMap);
}
}
答案 2 :(得分:0)
以下是基于示例的答案。在下面的示例中,pcList刚刚初始化并指向null(java为您执行此操作,如果它是静态或类成员),因为没有为其分配空列表或值。
List<Map<String, Object>> pcList;
现在,为pcList分配了一个新的空ArrayList。它还没有任何值,但是列表中的所有位置都是空的,这个带有数据类型ArrayList的pcList指向这个新的空ArrayList。
List<Map<String, Object>> pcList;= new ArrayList<>();
如果已声明Object引用但未实例化,则其值为null。
答案 3 :(得分:-1)
List<Map<String, Object>> pcList = new ArrayList<Map<String, Object>>();
Map<String, Object> pcMap = new HashMap<String, Object>();
ComputerConfigurations tempPC = null;
if (historyList != null) {
Iterator<ComputerConfigurations> iterator = historyList.iterator();
while (iterator.hasNext()) {
tempPC = (ComputerConfigurations) iterator.next();
pcMap.put(tempPC.getEnvironment(), tempPC);
pcList.add((Map<String, Object>) pcMap);
}
}