目录
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));
}
}
}
new HashMap<String,String>() 和new HashMap()的区别
使用 Map 的时候发现好多地方是这样实例化的:new HashMap<String,String>() , 就是把Map里面的元素的类型也写进去?写和不写有啥区别?性能上有没有好处?
回答:
在运行期没有任何区别, java的泛型只在编译期有效, 只是为了写代码的时候多一些约束少一些出错而已,木得区别,还是推荐指定类型,一如楼上所说多一些约束,二是取值的时候更省事,不用显式类型转换,最重要的一点是提高代码可读性。
new HashMap(),放进去的元素默认是Object类型的, 取出来的时候的时候要向下转型,容易发生错误啊,加上泛型,编译时就能确定类型了。
知识点讲解
1、哈希映射
put(key, value) - 添加元素(键值对)get(key) - 按键取值
containsKey(key) - 是否包含某个键
keySet() - 键集合
values() - 值集合
2、哈希集合
add(e) - 添加元素remove(e) - 移除元素
size() - 集合元素个数
isEmpty() - 是否为空集