目录
new HashMap() 和new HashMap()的区别,string>
词频统计:现有一段文本如下:“From/tomorrow/on/I/ will/be/a/happy/person/From/tomorrow/on/I/will/care/foodstuff/and/vegetables”。试用HashMap实现对文本中出现的单词词频进行统计,并对统计结果进行输出显示,如“I:2”,表示单词“I”在文本中出现了两次。
- package Edit;
- import java.util.*;
- public class WordFrequenc {
- public static void main(String[] args) {
- //定义字符串类型并输入字符串
- String str;
- str = "From/tomorrow/on/I/ will/be/a/happy/person/From/tomorrow/on/I/will/care/foodstuff/and/vegetables";
- //replaceAll(" ", "")可以清除两端以及中间的空格,注意小括号里的格式
- str = str.replaceAll(" ", "");
- //定义词频统计哈希映射<>里是Map里面的元素的类型,不写默认为Object类型的, 取出来的时候的时候要向下转型
- Map<String,Integer> map = new HashMap<>();
- //将字符串安卓‘/’拆分
- String[] words = str.split("/");
- //遍历但从数组,将单词进行计数
- for (String word : words) {
- /*put(key, value) - 添加元素(键值对)
- get(key) - 按键取值
- containsKey(key) - 判断是否包含某个键*/
- map.put(word, map.containsKey(word)? map.get(word)+1 : 1);
- // System.out.println(map);//HashMap输出为字典类型
- }
- //按照格式输出keySet() - 键集合
- for(String key : map.keySet()) {
- System.out.println(key+":"+map.get(key));
- }
-
- }
-
-
- }
使用 Map 的时候发现好多地方是这样实例化的:new HashMap
回答:
在运行期没有任何区别, java的泛型只在编译期有效, 只是为了写代码的时候多一些约束少一些出错而已,木得区别,还是推荐指定类型,一如楼上所说多一些约束,二是取值的时候更省事,不用显式类型转换,最重要的一点是提高代码可读性。
new HashMap(),放进去的元素默认是Object类型的, 取出来的时候的时候要向下转型,容易发生错误啊,加上泛型,编译时就能确定类型了。
put(key, value) - 添加元素(键值对)get(key) - 按键取值
containsKey(key) - 是否包含某个键
keySet() - 键集合
values() - 值集合
add(e) - 添加元素remove(e) - 移除元素
size() - 集合元素个数
isEmpty() - 是否为空集