Map集合统计字母次数
Map集合练习:
"asfefxAAcf34vrfdfse2-2asd--wdd"获取该字符串中,每一个字母出现的次数
要求打印的结果是:a(2)c(1)...;
思路:
对结果分析发现,结果中字母和出现次数之间构成映射关系,而且很多,
很多就需要存储。能存储映射关系的有数组和Map集合。
关系中有一方顺序固定么?没有,所以选有Map集合。
又发现可以作为唯一标识的一方有自然顺序,即字母表的顺序;
所以选有TreeMap存储。
集合中最终存储的是以字母为键,以字母出现次数为值的映射关系。
1.因为操作的是字符,所以先把字符串转化成字符数组。
2.遍历字符数组,分别以字母为键去Map集合中判断,集合中是否包含该元素,
如果不包含,则以该字母为键,以1为值,存入Map集合中;
如果包含,则取出该字母对应的值,加一,再把该字母和新的值存入集合,这样新的值就会覆盖旧的值。
3.遍历完毕,每个字母对应的值便是其在该字符串中出现的次数,
在对集合进行打印输出即可。
 public class MapTest {
     public static void main(String[] args) {
         String str="asfefxAAcf34vrfdfse2-2asd--wdd";
         String s=countChar(str);
         System.out.println(s);
     }
 //定义实现统计字母出现次数的静态方法
     public  static String countChar(String str) {
         char[] chs=str.toCharArray();
         Map<Character,Integer> tm=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'))
                 continue;
             int count=1;
             Integer value=tm.get(chs[i]);
             if(value!=null)
                 count+=value;
             tm.put(chs[i], count);
         }
         return printMap(tm);
     }
   //定义按规格打印集合的方法
     private static String printMap(Map<Character, Integer> tm) {
         StringBuilder sb=new StringBuilder();
         Iterator<Character> it=tm.keySet().iterator();
         while(it.hasNext())
         {
             Character key=it.next();
             Integer value=tm.get(key);
             sb.append(key+"("+value+")  ");
         }
         return sb.toString();
     }
 }
Map集合统计字母次数的更多相关文章
- Map 集合按字母排序方法
		
@Testpublic void testMapSort() { Map<String, String> map = new HashMap<>(); map.put(&quo ...
 - 集合框架-Map练习-记录字母出现的次数
		
/* * 练习: * 字符串"abcb453 sddbs343bsjvAJBBDVBs21768723",获取该字符串中,每一个字母出现的次数. * 要求打印结果是:a(2)b ...
 - 获取一个字符串中每一个字母出现的次数使用map集合
		
package 获取字符串中单字符出现次数; import java.util.Scanner; import java.util.TreeMap; /* * 需求:获取一个字符串中每一个字母出现的次 ...
 - Map集合练习之对字符串中字母出现的次数求和
		
不多说,直接上干货! 代码需求 如有这么一个字符串 String str = "fdg+avAdc bs5dDa9c-dfs"; MapTest.java package zhou ...
 - 集合框架-Map集合练习-记录字母次数思路及代码
		
1 package cn.itcast.p10.map.test; 2 3 import java.util.Iterator; 4 import java.util.Map; 5 import ja ...
 - Java 13天基础 06天map集合小练习(黑马程序员)  统计字符串中每个字符出现的次数 (经典面试题)
		
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
 - 使用folderLeft函数统计字母出现的次数
		
实例:统计字符串中字母出现的次数 import scala.collection.mutable object Demo_018{ def main(args: Array[String]): Uni ...
 - map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
		
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
 - 计算一个字符串的每个字符出现的次数案例——Map集合
		
其中,字符的包装类是Character;字符串包装类是String: 遍历字符串转换的数组,每个元素都是一个字符,看创建的这个集合有木有,一开始肯定是没有的其实,字符作为key,所以判断的是这个创建的 ...
 
随机推荐
- pip 解决 ImportError: cannot import name 'main'
			
当 pip 更新至最新版的时候,不管是执行 pip list 还说 pip install packageName 安装包,都会抛出一个异常 Traceback (most recent call l ...
 - Js中的filter()方法
			
/* filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组. filter()基本语法: arr.filter(callback[, thisArg]) filte ...
 - 142. Linked List Cycle II(找出链表相交的节点)
			
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...
 - How to install tensorflow from source on ubuntu 18.04 64bit
			
1,install dependencies sudo apt-get install openjdk-8-jdk git python-dev python3-dev python-numpy py ...
 - String StringBuilder StringBuffer 对比 总结得非常好
			
转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸 ...
 - The current .NET SDK does not support targeting .NET Core 3.0
			
编译错误 Severity Code Description Project File Line Suppression StateError NETSDK1045 The current .NET ...
 - 强连通分量(Korasaju & Tarjan)学习笔记
			
好久以前学过的东西...现在已经全忘了 很多图论问题需要用到强连通分量,还是很有必要重新学一遍的 强连通分量(Strongly Connected Component / SCC) 指在一个有向图中, ...
 - Sublime Text 3 配置文件路径修改
			
Sublime Text 3安装完以后(安装过程不再演示),第一次打开会在C:\Users\admin\AppData\Roaming目录下创建一个Sublime Text 3目录用于存放Sublim ...
 - platforms
			
1.Qt551x86_vs2013 所有的 platforms文件夹 的路径: 1.1.E:\ZC_ProgramFiles_161104\Qt551_vs2013\5.5\msvc2013\plug ...
 - 递归--练习4--noi666放苹果
			
递归--练习4--noi666放苹果 一.心得 写出状态后勇敢假设 二.题目 666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允 ...