统计一句话中重复字符、单词的个数,HashMap,Queue List
来源:互联网 发布:java入门的好书 编辑:程序博客网 时间:2024/05/01 09:47
//统计一句话中重复字符的个数(Queue)-----------------------------package day081702;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Queue;/** * 统计一句话中各个字符的个数 */public class MapDemo01 { public static void main(String[] args) { String str = "good good study, day day up."; Queue<Character> queue = toQueue(str);//把一串字符串处理为只含有小写字母的队列Queue Map<Character,Integer> map = new HashMap<Character,Integer>(); while(queue.size()>0){ Character c = queue.poll();//取出首元素,并做删除操作 if(!map.containsKey(c)){ map.put(c, 1); }else{ map.put(c, map.get(c)+1); } } System.out.println(map); } /** * 把一串字符串处理为只含有小写字母的Queue * (其他无关字符过滤掉) * @param str * @return Queue<Character> */ public static Queue<Character> toQueue(String str){ //存储26个小写字母 List<Character> list26 = new ArrayList<Character>(); for(int i=0;i<26;i++){ Character c = (char)('a'+i); list26.add(c); } //一旦是小写字母,存入queue Queue<Character> queue = new LinkedList<Character>(); for(int i=0;i<str.length();i++){ Character c = str.charAt(i);//遍历每个字符 if(list26.contains(c)){//如果26个字母包含该字符,把该字符存入queue queue.offer(c); } } return queue; }}//统计一句话中重复字符的个数(List)--------------------------------------package day081702;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Queue;public class MapDemo02 { public static void main(String[] args) { String str = "good good study,day,day,up."; List<Character> list = toList(str);//把一串字符串处理为只含有小写字母的List Map<Character,Integer> map = new HashMap<Character,Integer>(); long start = System.currentTimeMillis(); for(int i=list.size()-1;i>=0;i--){ Character c = list.get(i); if(!map.containsKey(c)){ map.put(c, 1); }else{ map.put(c, map.get(c)+1); } list.remove(i); } System.out.println(map); long end = System.currentTimeMillis(); System.out.println(end-start); } /** * 把一串字符串处理为只含有小写字母的List * (其他无关字符过滤掉) * @param str * @return List<Character> */ public static List<Character> toList(String str){ //存储26个小写字母 List<Character> list26 = new ArrayList<Character>(); for(int i=0;i<26;i++){ Character c = (char)('a'+i); list26.add(c); } //一旦是小写字母,存入list List<Character> list = new ArrayList<Character>(); for(int i=0;i<str.length();i++){ Character c = str.charAt(i);//遍历每个字符 if(list26.contains(c)){//如果26个字母包含该字符,把该字符存入list list.add(c); } } return list; }}//统计一句话中重复单词的个数--------------------------------------package day081702;import java.util.Arrays;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.LinkedList;import java.util.Map;import java.util.Map.Entry;import java.util.Queue;import java.util.Set;/** * 统计一句话中重复单词的个数 */public class MapDemo03 { public static void main(String[] args) { String str = "good good study, day day up."; Queue<String> queue = toQueue(str);//toQueue()方法把String转为只包含单词的数组(过滤掉空格和标点符号) /* * 循环队列,放入map */ Map<String,Integer> map = new LinkedHashMap<String,Integer>();//LinkedHashMap可按顺序循环输出 //Map<String,Integer> map = new HashMap<String,Integer>();//HashMap无顺序输出 while(queue.size()>0){ String key = queue.poll();//取出首元素,并做删除操作 if(!map.containsKey(key)){//如果不包含该key,则装入key,计数1 map.put(key, 1); }else{ map.put(key, map.get(key)+1);//如果已经包含该key,则value增加1 } } /* * 循环key */ Set<String> keySet = map.keySet(); for(String setWord:keySet){//高级for循环 String word = setWord; System.out.println(word+"的重复次数:"+map.get(word)); } Iterator<String> it = keySet.iterator(); while(it.hasNext()){//用Iterator来循环 String word = it.next(); System.out.println(word+"的重复次数:"+map.get(word)); } /* * 循环Entry */ Set<Entry<String,Integer>> entrySet = map.entrySet(); for(Entry<String,Integer> entry: entrySet){//高级for循环 String word = entry.getKey(); Integer num = entry.getValue(); System.out.println(word+"重复次数:"+num); } Iterator<Entry<String,Integer>> entryIt = entrySet.iterator(); while(entryIt.hasNext()){//用Iterator来循环 Entry<String,Integer> tmpEntry = entryIt.next(); String word = tmpEntry.getKey(); Integer num = tmpEntry.getValue(); System.out.println(word+"重复次数:::"+num); } } /** * 把String转为只包含单词的数组(过滤掉空格和标点符号) * @param str * @return Queue<String> */ public static Queue<String> toQueue(String str){ String regex = "\\,|\\."; str = str.replaceAll(regex, " ");//把逗号点号转为空格 System.out.println(str); String regex2 = "\\ +"; str = str.replaceAll(regex2, " ");//把多个空格转为1个空格 System.out.println(str); String[] words = str.split(" ");//转为单词数组 System.out.println(Arrays.toString(words)); //数组转为队列queue Queue<String> queue = new LinkedList<String>(); for(String word : words){ queue.offer(word); } return queue; }}
0 0
- 统计一句话中重复字符、单词的个数,HashMap,Queue List
- 统计list中重复项的个数
- 统计单词的个数,行数,字符个数
- 统计一句话或者一个单词出现字母的个数
- 一行字符,单词个数的统计
- java统计字符串中重复出现字符的个数
- 统计字符串中重复的字符个数并输出
- 使用java的hashmap统计输入的单词个数
- 字符串中不重复的单词个数
- 统计文章中相同单词的个数
- 统计字符串中单词的个数
- 统计文章中单词的个数
- 统计字符串中单词的个数
- 统计字符串中单词的个数
- 统计文本中每个单词的个数
- Java统计字符串中每个字符(单词)个数
- 统计字符个数,单词个数,行数
- [C] 统计字符个数 单词个数 行数
- Android应用程序基础(二)
- 在Tomcat下部署war
- WAS导入证书--错误提示:java.security.cert.CertPathValidatorException: Certificate chaining error
- 7.1Defining Abstract Data Ty &7.3Additional Class Features &7.5
- 360:2015校招_俩个绝对路径找相对路径
- 统计一句话中重复字符、单词的个数,HashMap,Queue List
- 冒泡排序并统计其循环次数
- 字节流与字符流的区别详解
- Leetcode 212 Word Search II 单词查找
- map集合练习——记录字母次数
- E: Malformed line 60 in source list /etc/apt/sources.list (dist parse)
- 多线程(三) NSOperation,NSOperationqueue
- MGTemplateEngine 模版引擎简单使用
- 做一天和尚就要撞好一天钟