黑马程序员-java之HashMap,TreeMap
来源:互联网 发布:网络安全检查总结报告 编辑:程序博客网 时间:2024/05/17 07:57
--------------android培训、java培训、期待与您交流--------------------
1 HashMap底层是按照哈希表对元素进行存储的,所以其进行查找,插入,删除比TreeMap效率高,一般常用HashMap
2 TreeMap则可以对元素进行排序
3 共性:二者存储元素都唯一,不允许有相同的key出现
实例:获取grflkaxsgnjsduasjwmlsnvxcuiqwhriuzsnvkzifu字符串中字母出现的次数,形如a(1)c(5)...括号中数字表示字母出现的次数,且按字母自然顺序排序
分析:从结果可以看出该形式字母与次数形成了一一对应的映射关系,而且最终结果要求字母有序,所以考虑用TreeMap
代码
package com.itheima;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "grflkaxsgnjsduasjwmlsnvxcuiqwhriuzsnvkzifu";//定义一个字符串
System.out.println(getCount(str));//调用自定义的方法计算出各个字母出现的次数并打印
}
public static String getCount(String str){
char[] chs = str.toCharArray();//将字符串变成字符数组
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();//创建TreeMap对象用于存储字母和对应次数组成的键值对
for(int i=0;i<chs.length;i++){//遍历字符数组,拿数组中的元素和集合做比较
if(!tm.containsKey(chs[i])){//集合中不存在该元素,则把该元素和对应的次数1存入集合
tm.put(chs[i], 1);
}else{
int value = tm.get(chs[i]);
value++;
tm.put(chs[i], value);//集合中已存在该元素,则把该元素对应的原来次数自增1后再存入集合,覆盖原来的值
}
}
StringBuilder sb = new StringBuilder();//定义一个StringBuilder容器,将集合中的键值对分别存进去形成与要求一样的结果格式
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();//将集合中的键值对取出组成Set集合
Iterator<Map.Entry<Character, Integer>> it = entrySet.iterator();//取出set中的迭代器
while(it.hasNext()){//遍历set集合
Map.Entry<Character,Integer> entry = it.next();
char ch = entry.getKey();//取得key即字母
int count = entry.getValue();//取得value即对应的次数
sb.append(ch+"("+count+")");//将字母与对应的次数以最后的格式存入集合StringBuilder容器中
}
return sb.toString();//返回最后的结果字符串
}
}
运行结果
a(2)c(1)d(1)f(2)g(2)h(1)i(3)j(2)k(2)l(2)m(1)n(3)q(1)r(2)s(5)u(4)v(2)w(2)x(2)z(2)
0 0
- 黑马程序员-java之HashMap,TreeMap
- 黑马程序员—Java集合框架(Map、HashMap、TreeMap)
- 黑马程序员-Map-TreeMap-HashMap-Map.Entry
- 黑马程序员——Map、HashMap、TreeMap
- 黑马程序员 java 基础 毕向东 面向对象 集合框架 Map HashTable HashMap TreeMap
- 黑马程序员——Map集合 HashMap TreeMap
- 黑马程序员:Map集合:Hashtable、HashMap、TreeMap介绍
- 黑马程序员——Map集合:HashTable,HashMap,TreeMap
- 黑马程序员---Vector、ArrayList、LinkedList、HashMap、TreeMap、HashTable 区别
- Java之集合HashMap,LinkedHashMap和TreeMap
- Java-集合框架Map之HashMap、TreeMap
- 集合之HashMap、TreeMap
- java HashMap TreeMap LinkedHashMap
- Java HashMap转TreeMap
- [黑马程序员]TreeMap练习
- java之HashMap、LinkedHashMap和TreeMap的区别
- Java基础之集合框架(三)--Map、HashMap、TreeMap
- Java基础之集合框架(三)--Map、HashMap、TreeMap
- leetcode - Contains Duplicate III
- Android动态加载字节码
- 操作系统:银行家算法(避免死锁)
- ajax
- Linux 下编译Android-VLC开源播放器详解(附源码下载)
- 黑马程序员-java之HashMap,TreeMap
- python的GUI编程
- Android开发教程--onConfigurationChanged不执行的解决办法
- Oracle EBS R12.2 新特性文档
- Android VLC播放器二次开发1——程序结构分析
- Oracle菜鸟之grant授权
- 我将要出去工作了
- Android Studio使用jni、so库
- Android VLC播放器二次开发2——CPU类型检查+界面初始化