查询字符串中字母的个数(两种实现方式1,list与set集合 2,map集合)

来源:互联网 发布:胸肌锻炼方法 知乎 编辑:程序博客网 时间:2024/06/06 23:54

题目:

取出一个字符串中字母出现的次数。如:字符串:"abcde%^kka27qoq" ,输出格式为:a(2)b(1)k(2)...

第一种方式(set和list结合使用):

package itheima;import java.util.ArrayList;import java.util.LinkedHashSet;import java.util.List;import java.util.Set;/** * .取出一个字符串中字母出现的次数。如:字符串:"abcde%^kka27qoq" ,输出格式为:a(2)b(1)k(2)... * @author Administrator * */public class Demo6 {public static void main(String[] args) {String str="abcdekka27qoA*&AAAq";//查询字符串中字母的个数的函数countStringNumber(str);}private static void countStringNumber(String str) {//字符串转化为字符数组char[] array = str.toCharArray();//使用set结合,LinkedHashSet有顺序,不重复Set<Character> set=new LinkedHashSet<Character>();//将数组中的字符(不重复)添加到set集合for (int i = 0; i < array.length; i++) {set.add(array[i]);}//把set集合转化为list集合List<Character> list=new ArrayList<Character>(set);for (int i = 0; i < list.size(); i++) {int count=0;//记录字符个数的变量for (int j = 0; j < array.length; j++) {if(list.get(i).equals(array[j])){//判断付过list中的字母与数组中的字母一样count就加1count++;}}System.out.print(list.get(i)+"("+count+")");//输出}}}

第二种方式(map集合):

package itheima;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.util.Map.Entry;public class Demo7 {public static void main(String[] args) {String str="abcdekka27qoA*&AAAq";//查询字符串中字母的个数的函数countStringNumber(str);}private static void countStringNumber(String str) {//转化为字符数组char[] c = str.toCharArray();//System.out.println(c);//使用map集合,LinkedHashMap有序的Map<Character, Integer> map=new LinkedHashMap<Character, Integer>();//遍历for (int i = 0; i < c.length; i++) {//如果集合中的key不包含c[i]就设置为1if(!map.keySet().contains(c[i])){map.put(c[i], 1);}else{//否 则就加1map.put(c[i], map.get(c[i])+1);}}//迭代集合Iterator<Map.Entry<Character, Integer>> it=map.entrySet().iterator();while(it.hasNext()){Entry<Character, Integer> entry = it.next();System.out.print(entry.getKey()+"("+entry.getValue()+")");}}}

运行结果:




1 0
原创粉丝点击