一:知识补充( 这个HashMap Map 和 c++的Map还是有很大的区别的,区别之大让人瞠目结舌,当然两者的作用是一致的,但是函数名称出入很大,就连iterator区别也很大的 )
(1)HashMap 和 HashTable的区别(c++中只有map木有hashmap的)
HashMap不是线程安全的hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。
HashTable是线程安全的一个Collection。
(2)HashMap的注意事项
HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中;向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。
HashMap应用举例:控制台输入一句英语,简单统计各个单词出现的次数
(3)iterator与c++的不同:第一步:得到key值的集合 Set<String> set = map.keySet(); 第二步:用iterator遍历set集合 Iterator<String> iterator = set.iterator; iterator.hashNext(); iterator.next(); 第三步:put / get (key) 求得value值 map.containsKey(key)(是否已经包含此关键字),map.put(key,value)存入键值对,map.get(key)返回key值所对应的value值。
(4)在此,再一次的透露自己的一个拙计的行为:Scanner类自己是第一次用,为什么说拙计呢?是因为自己认为算是比较早认识学习java的学习java的AWT 、Swing,之后就是javaWe的jsp servelet等等,从第一个java applet的简单的计算公式的编译器开始到五子棋;再到第一个只有jsp + tomcat的javaWeb项目到 目前用到spring restful的javaWeb项目。连一个Scanner类或者java控制台输入输出都没有研究过,当然源代码更是没有深入过。
(5)总之,再一次的在这里讽刺自己,激励自己,同时也给后来人一个忠告!低调做人高调做事:一定要研究源代码级别的,一定要把基础打牢打扎实。
二:控制台输入 统计单词
package edu.tju.cs;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class HashMap3Dimensions {
public void mprint(String sentence){
String regex = " ";
Stri