题目:
取出一个字符串中字母出现的次数。如:字符串:"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就加1
count++;
}
}
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]就设置为1
if(!map.keySet().contains(c[i])){
map.put(c[i], 1);
}else{//否 则就加1
map.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()+")");
}
}
}
运行结果: