字符串排序与统计
来源:互联网 发布:linux hadoop1.2.1安装 编辑:程序博客网 时间:2024/06/06 17:57
统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4
package com.heima.question7;import static org.junit.Assert.assertEquals;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import org.junit.Test;public class StringStatictis {@Testpublic void test(){String originalString = "abadcdffbaeba";String resultString = stringStatictis(originalString);String expectedString = "c:1,e:1,d:2,f:2,b:3,a:4";assertEquals(expectedString,resultString);}public static void main(String[] args){String originalString = "abadcdffbaeba";String resultString = stringStatictis(originalString);String expectedString = "c:1,e:1,d:2,f:2,b:3,a:4";System.out.println(resultString);}@SuppressWarnings("unchecked")public static String stringStatictis(String originalString){char[] charArray = originalString.toCharArray();List<Character> list = new ArrayList<Character>();for(char c : charArray){list.add(c);}/** * 将统计结果存在一个Map当中,key为出现的字符,value为字符出现的次数 */Map<Character,Integer> map = new HashMap<Character,Integer>();/** * 取得并移除list中的第一个元素,将其作为key并将其与list中的其它key相比较,如果相等,则将其元素同样从list中移除, * 同时,将key所对应的value值加1 */while(list.size()>0){char key = list.remove(0);Integer value = 1 ;int newListSize = list.size();int j=0;for(int i=0;i<newListSize;i++){if(key==list.get(j)){list.remove(j);value++;}else{j++;}}map.put(key, value);}List sortList = new ArrayList(map.entrySet());/** * 对sortList中的元素进行排序: * 1.按字符出现的次数排序,出现次数多的排在后面 * 2.如果字符次数相等,则将小字符排在前面 */Collections.sort(sortList,new Comparator(){@Overridepublic int compare(Object o1, Object o2) { Map.Entry obj1 = (Map.Entry) o1; Map.Entry obj2 = (Map.Entry) o2; if((Integer)obj1.getValue()==(Integer)obj2.getValue()){ return (Character)obj1.getKey() - (Character)obj2.getKey(); }else{ return (Integer)obj1.getValue()-(Integer)obj2.getValue(); } }});StringBuilder sb = new StringBuilder();for(Object obj:sortList){Map.Entry entry = (Map.Entry)obj;sb.append(entry.getKey()+":"+entry.getValue()+",");}sb.deleteCharAt(sb.length()-1);return sb.toString();}}
- 字符串排序与统计
- 字符串 排序-字符统计
- Python字符串统计以及排序
- pandas排序与统计
- 算法--计数排序与统计计数排序
- 【统计字符串 与 寻找子字符串】
- perl字符串与排序
- 指针与字符串排序
- hashmap按key统计与hashmap排序
- 第二部分 排序与顺序统计
- linux shell 文本排序与统计
- 文章获取与单词统计排序
- 统计字符串中字符出现次数以及排序
- 51Nod-1182 完美字符串【排序+字符统计】
- 排序和顺序统计量与堆排序
- 排序(4) 快速排序与顺序统计值
- MySql 字符串类型与字符串长度统计函数
- 统计排序
- NSIS使用技巧集合
- 18天Java学习---Java的对象序列化以及文件IO处理
- 几个简单有趣的算法
- Linux内核访问外设I/O资源的方式-静态映射(map_desc)方式
- Outlook 2007 Form Region add-in 可能会被加载两次
- 字符串排序与统计
- Fragment学习二
- 转载:色彩代码表,这个东东还挺实用的
- Practical Java(重点版)之对象(完)
- IE6 PNG透明终极解决方案
- 编译src目录下的源文件,然后放在compile文件夹下
- 由泛型到切面编程
- vb6: dim rs As New ADODB.Recordset 用户定义类型未定义
- sqlserver2008数据库优化常用脚本