Java HashMap介绍

int和integer有什么区别

Java HashMap containsKey() 方法

package strSplit;
import java.util.HashMap;

public class ZipStr {
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		String str = "aabaaccdd";
		System.out.println(fun1(str));
	}
	
	public static HashMap fun1(String str) {
		HashMap<Character, Integer> map = new HashMap<Character, Integer>();
		char[] c = str.toCharArray();
		
		for (int i = 0; i < c.length; i++) {
			//get()获取指定 key 对应对 value
			Integer count = map.get(c[i]);//关键代码:如果c[i]存储的值(如果有相等的值,value会改变)相等,那么count也相等
			//此处的count的类型一定要为Integer,如果为int类型,则count值为0(Integer为为对象引用,int仅为值)
			//containsKey() 	检查 hashMap 中是否存在指定的 key 对应的映射关系。
			if (!map.containsKey(c[i])) {//如果该字符第一次出现,则赋value为1,此后如果出现相同的值(指向的引用是相同的,也就是键值存在对应映射,则执行else)
				map.put(c[i], 1);
			} else {//获取到指定的 key(判断值是否出现过,出现过则原值+1) 对应的映射关系。
				map.put(c[i], count + 1);//此时的c[i]不代表下标而代表值a···
			}
		}
		
		return map;//返回的是每种值及对应value
	}

}

//思路:
//1、将字符串放到字符数组中
//2、将每一个字符元素的值放到Integer对象 count中
//3、如果该字符第一次出现,则value=1,如果已经出现过,则在第一次出现的值的value上+1
//4、返回map