0 0

HashMap<String,Float>[] a 数组如何定义和初始化5

package com.vista;

import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class DecreaseW {

private TrainingDataManager tmd;
private HashMap<String,Float>[] aTweightList;
public DecreaseW() {
tmd = new TrainingDataManager();
System.out.println("创建完tmd对象");
for(int i = 0 ; i < tmd.getTraningClassifications().length ;i++)
   {
try{
  aTweightList[i] = new HashMap<String, Float>();
}catch(Exception e){
e.printStackTrace();
}
   }
}
}
为什么会有java.lang.NullPointerException异常

HashMap<String,Float>[] a 数组如何定义和初始化该如何定义和初始化?
2010年1月06日 15:15

4个答案 按时间排序 按投票排序

0 0

你这么声明泛型数组是可以编译通过的
HashMap<String,Float>[] a

但是,无法使用它,也就是无法给它赋值的,

2010年1月13日 15:31
0 0

恩,null是因为你定义了一个数组引用但是没有给他初始化,就是没有在堆上分配内存空间。
所以
应该是下面这种方式:
String[] words = new String[10];
或者
String[] words = new String[]{"hello", "world"};

2010年1月10日 22:10
0 0

LZ犯了两个错误:

(1) 泛型是没有数组的。编译器不承认 HashMap<K,V>[]这种形式的:
      Cannot create a generic array of HashMap<k,v>
    原因就是数组必须确定他每一个元素的类型。但是泛型在编译阶段有一个类型擦除的问题,也就是说编译器理解HashMap<Integer,Integer>和HashMap<String,String>都是同一种类型HashMap。如果泛型数组存在,那么HashMap<Integer,Integer>和HashMap<String,String>对象都可以加入到同一个HashMap[]数组中,这会造成灾难性的结果。

    详细原因可以看这篇博客  http://hxraid.iteye.com/blog/549509

    如果一定要定义HashMap数组,可以使用HashMap[] aTweightList = new HashMap[10]; 形式,也就是HashMap常规类型。

(2) 对于没有初始化的类对象,系统会给予一个null值。但是调用null对象,一定会报NullPointerException异常的。

    养成随时初始化的好习惯。
   
   

2010年1月07日 09:44
0 0

HashMap[] aTweightList = new HashMap[10];
aTweightList[1] = new HashMap<String, Float>();
可把例中的 10  , 1 换成你想用的变量!
因为你的aTweightList没有分用new给它分配内存
private HashMap<String,Float>[] aTweightList;

2010年1月06日 16:17

相关推荐

    java springmvc 的极验验证

    Map&lt;String, String&gt; resultMap = new HashMap&lt;&gt;(); boolean isSuccess = geetestService.validateResult(challenge, validate, seccode); if (isSuccess) { resultMap.put("result", "success"); } else { ...

    java 极验证的实现

    Map&lt;String, Object&gt; response = new HashMap&lt;&gt;(); if (result == 1) { response.put("success", true); } else { response.put("success", false); } return response; } ``` ### 五、注意事项 1. **安全...

    程序员面试题

    同样地,变量或方法如果被声明为`final`,则它们的值或行为在初始化后便无法更改。例如,被声明为`final`的变量必须在声明时赋予初始值,在后续的程序执行过程中只能读取其值,而不能对其进行修改;被声明为`final`...

    AndroidTTSDemoSecond

    - **播放预定义的音效**:`playEarcon(String earcon, int queueMode, HashMap&lt;String, String&gt; params, UtteranceProgressListener listener)`可以播放预定义的音效,增强用户体验。 总的来说,`...

    Java实训结业考试复习大纲

    - 数据类型分为基本类型(如byte, short, int, long, float, double, char, boolean)、引用类型(如String, ArrayList, HashMap, Integer)和空类型null。 - 数组声明不指定长度,如 `int[] a; a = new int[5];`...

    sesvc.exe 阿萨德

    table[bucketIndex] = new Entry&lt;&gt;(hash, key, value, e); size++; } 当调用 addEntry 写入 Entry 时需要判断是否需要扩容。 如果需要就进行两倍扩充,并将当前的 key 重新 hash 并定位。 而在 createEntry 中会...

    Java 中的HashMap详解和使用示例_动力节点Java学院整理

    HashMap&lt;String, Integer&gt; map = new HashMap&lt;&gt;(); map.put("Apple", 1); map.put("Banana", 2); map.put("Cherry", 3); System.out.println(map.get("Apple")); // 输出1 map.remove("Banana"); System.out.println...

    Java领域基础部分JavaSE笔记

    ` &gt; `* / %` &gt; `+ -` &gt; `&lt;&lt; &gt;&gt; &gt;&gt;&gt;` &gt; `&lt; &lt;= &gt; &gt;=` &gt; `== !=` &gt; `&` &gt; `^` &gt; `|` &gt; `&&` &gt; `||` &gt; `? :` &gt; `=` &gt; `+= -= *= /= %= &= ^= |= &lt;&lt;= &gt;&gt;= &gt;&gt;&gt;=` ##### 3.7 标识符的命名规则和规范 - **命名规则**: - ...

    JAVA初级面试题(release)

    - **一维数组**:创建、初始化和遍历。 - **多维数组**:二维数组及其使用。 5. **字符串**: - **String类**:不可变性、常用方法如concat、substring、indexOf、replace等。 - **StringBuilder与StringBuffer...

    android语音合成例程

    要合成文本,使用`speak(String text, int queueMode, HashMap&lt;String, String&gt; params)`方法。`text`参数是待合成的文本,`queueMode`决定合成任务如何加入队列,`params`可以包含额外的合成参数,如语速、音调等...

    Android开发常用的方法

    ArrayList&lt;HashMap&lt;String, Object&gt;&gt; list = new ArrayList&lt;&gt;(); SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.list, new String[]{""}, new int[]{R.id.TextView01}); listView.setAdapter...

    java SE基础知识点文档

    7. **数组**:理解一维和多维数组的声明、初始化和操作,包括数组长度的获取和遍历数组的方法。 8. **字符串**:Java中的String类是不可变的,了解字符串的创建、连接、比较和方法如substring、indexOf、trim等。 ...

    java基础教程(续)~~~

    7. **数组**:了解如何声明、初始化和操作数组,包括一维数组和多维数组。 8. **方法(函数)**:学习如何定义和调用方法,这是组织代码和重用代码的关键。 9. **类与对象**:面向对象编程是Java的核心,包括类的...

    android tts示例

    使用`speak(String text, int queueMode, HashMap&lt;String, String&gt; params)`方法将文本转化为语音。`queueMode`参数控制合成任务的执行方式,`params`则可以设置额外的合成参数。 ```java String text = "你好,...

    JAVA基础PPT

    - 一维数组的声明、初始化和遍历。 - 多维数组的概念。 9. **字符串**: - String类的特性,不可变性。 - 常用的String方法,如concat(), length(), substring()等。 10. **方法(函数)**: - 方法的定义和...

    java程序员手札-基础篇-01

    理解数组的声明、初始化、遍历和操作方法,是处理批量数据的关键。 5. **类与对象**:面向对象编程是Java的核心特性。类是创建对象的模板,对象是类的实例。掌握类的定义、构造器、属性、方法以及对象的创建和引用...

    麻省理工18年春软件构造课程阅读02-Java基础-1

    Map&lt;String, Integer&gt; map = new HashMap&lt;&gt;(); map.put("key", 1); map.containsKey("key"); map.remove("key"); ``` Python同样有类似的数据结构,如`list`, `dict`: ```python list = ["item"] "item" in list ...

    JAVA核心语法笔记

    - 需要了解如何声明、初始化、访问和遍历数组中的元素。 5. **方法** - 方法是代码的重用机制,包含一组操作。理解参数传递(值传递和引用传递)和方法的返回值是必要的。 - 构造函数用于初始化对象,每个类至少...

    2021Java最新面试题库.doc

    类的实例化顺序遵循以下规则:首先加载并初始化父类的静态成员(包括变量和静态初始化块),然后是子类的静态成员,接着是父类的非静态成员(实例变量)和父类构造函数,再是子类的非静态成员和子类构造函数。...

Global site tag (gtag.js) - Google Analytics