package cn.itcast.p1.map.test;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
/*
* 练习:
* "fdgavcbsacdfs" 获取该字符串中,每一个字母出现的次数。
* 要求打印结果是:a(2)b(1)...;
* 思路:
* 对于结果的分析发现,字母和次数之间存在着映射的关系。而且这种关系很多。
* 很多就需要存储,能存储映射关系的容器有数组和Map集合。
* 关系一方式有序编号吗?没有!
* 那就是使用Map集合。 又发现可以保证唯一性的一方具备着顺序如 a b c ...
* 所以可以使用TreeMap集合。
*
* 这个集合最终应该存储的是字母和次数的对应关系。
*
* 1,因为操作的是字符串中的字母,所以先将字符串变成字符数组。
* 2,遍历字符数组,用每一个字母作为键去查Map集合这个表。
* 如果该字母键不存在,就将该字母作为键 1作为值存储到map集合中。
* 如果该字母键存在,就将该字母键对应值取出并+1,在将该字母和+1后的值存储到map集合中,
* 键相同值会覆盖。这样就记录住了该字母的次数.
* 3,遍历结束,map集合就记录所有字母的出现的次数。oy.
*
*
*/
public class MapTest {
/**
* @param args
*/
public static void main(String[] args) {
String str = "fdg+avAdc bs5dDa9c-dfs";
String s = getCharCount(str);
System.out.println(s);
}
public static String getCharCount(String str) {
//将字符串变成字符数组
char[] chs = str.toCharArray();
//定义map集合表。
Map<Character,Integer> map = new TreeMap<Character,Integer>();
for (int i = 0; i < chs.length; i++) {
if(!(chs[i]>='a' && chs[i]<='z' || chs[i]>='A' && chs[i]<='Z'))
// if(!(Character.toLowerCase(chs[i])>='a' && Character.toLowerCase(chs[i])<='z'))
continue;
//将数组中的字母作为键去查map表。
Integer value = map.get(chs[i]);
int count = 1;
//判断值是否为null.
if(value!=null){
count = value+1;
}
// count++;
map.put(chs[i], count);
/*
if(value==null){
map.put(chs[i], 1);
}else{
map.put(chs[i], value+1);
}
*/
}
return mapToString(map);
}
private static String mapToString(Map<Character, Integer> map) {
StringBuilder sb = new StringBuilder();
Iterator<Character> it = map.keySet().iterator();
while(it.hasNext()){
Character key = it.next();
Integer value = map.get(key);
sb.append(key+"("+value+")");
}
return sb.toString();
}
}
分享到:
相关推荐
在Java编程语言中,统计一个字符串中每个字母的个数是一项基本任务,它涉及到字符串处理和字符遍历。下面我们将详细探讨如何实现这个功能,并扩展到相关的字符串操作和字符统计的知识点。 首先,我们需要理解Java中...
在Java编程中,有时我们需要找出一个给定字符串中出现次数最多的字母及其出现的次数。这通常涉及到字符串处理、字符遍历、数据结构如哈希映射(Map)以及数组的运用。以下是一个详细的方法来解决这个问题: 首先,...
《黑马程序员面试宝典(java)2018版》是一本专门为Java开发者准备的面试指南,涵盖了大量在面试过程中可能遇到的问题和知识点。这本宝典由黑马程序员机构精心编纂,汇集了近万名学员的实际面试经验,为求职者提供了...
每个矩形代表一个数据节点,其面积大小与该节点在树中的相对大小或重要性成比例。通过这种方式,Treemap可以直观地展示复杂的数据结构,尤其适合展现多级目录或者资源分配的情况。 **React与d3.js的结合** `react-...
* 正则统计字符串出现次数 * * @param source * @param regexNew * @return int */ public static int finder(String source, String regexNew) { String regex = "[a-zA-Z]+"; if (regexNew != ...
在本例中,我们使用TreeMap来统计一个句子或一个段落中单词出现的次数,并按照字母表顺序输出。 知识点1:Java TreeMap的使用 TreeMap是Java集合框架中的一种Map实现,它实现了SortedMap接口,能够根据键的自然...
在本课程"02-课件:第2部分:Java高级编程.zip"中,宋红康老师深入讲解了Java语言的高级编程概念和技术。这个压缩包包含了一系列课件,旨在帮助学习者掌握Java编程的精髓,提升编程技能。以下是根据课程内容提炼出的...
react-d3-treemap 基于 和构建的TreeMap组件。 演示 特征 为绘画SVG做出React D3用于进行数学计算 安装 在React项目中使用react-d3-treemap的步骤 1.从NPM安装 npm install --save react-d3-treemap 2.导入并在您...
在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 Map 接口,都是 Map 的子类,每个子类都有其特点和使用场景。 HashMap HashMap 是最常用的 Map 实现类,它根据键的哈希码值存储数据,能够快速地存储和获取...
java 字符串数字混搭字符串排序[归类] ...在实际应用中,java 字符串数字混搭字符串排序的应用非常广泛,例如在数据库查询结果中对字符串数字混搭字符串进行排序,在文件名排序中对字符串数字混搭字符串进行排序等等。
《2018最新版Java程序员面试宝典+题库...以上知识点只是《2018最新版Java程序员面试宝典+题库》中的一部分,书中的每一个章节都可能成为面试中被问到的问题,通过深入学习和练习,可以有效提升Java程序员的面试竞争力。
然后,我们遍历字符串,将每个字符添加到TreeMap中,并统计其出现次数。在遍历完成后,我们可以使用TreeMap的keySet方法来获取所有的键,然后遍历键值对,输出每个字符的出现次数。 在使用TreeMap对字符串进行排序...
"Java范例大全"通常包含了大量的Java编程示例,涵盖了语言基础、类库使用、框架集成等多个方面,旨在帮助开发者深入理解和熟练运用Java。以下是基于这个主题的详细知识点解析: 1. **Java基础**: - 变量与数据...
例如,在上述代码中,使用了for循环来遍历字符串中的每个字符,并统计每个字符出现的次数。 知识点2:Java集合框架 Java集合框架是一个强大且灵活的工具,提供了多种集合类,例如ArrayList、LinkedList、HashSet、...
集合框架是Java处理数据集合的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口,以及其实现类。它们提供了丰富的操作方法,便于数据的存储、检索和管理...
6. **C++中的std::map**: - 它是二叉搜索树(通常为红黑树)实现,保持键的自然顺序。 - 插入、删除和查找的时间复杂度均为O(log n)。 7. **使用场景**: - 缓存:存储常用数据,通过键快速获取。 - 关联数组...
以下是一些重要的知识点,这些内容可能会出现在北京京东的Java中级工程师面试中。 1. **核心Java概念**: - 数据类型:了解基本类型和引用类型的差异。 - 运算符:理解各种运算符的优先级和用法。 - 流程控制:...
在Java编程语言中,数据结构和算法是两个至关重要的概念,它们构成了软件开发的基础。数据结构是组织和存储数据的方式,而算法则是解决问题或执行任务的步骤。本指南将深入探讨这两个主题,帮助开发者提高代码效率,...
Java程序员在面试过程中可能会遇到各种各样的问题,这些题目涵盖了Java语言的基础、框架、网络协议以及数据结构等多个方面。以下是对这些知识点的详细解释: 1. **Hibernate中的离线查询去除重复项**: Hibernate ...
Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了一种高效且灵活的数据组织方式。在面试中,了解并掌握集合框架的基本概念、特点、用途以及底层实现是必不可少的。以下是对Java集合框架的一些...