字符串压缩
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
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kanyun's Blog!
评论