**题目一:统计一个字符串中每个字符出现的次数,并按出现的次数降序输出统计结果**
package com.woniu;
import java.util.*;
/*
*知识点回顾:
*(1)Character类:
* 在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。
* 以确定字符的类别(小写字母,数字,等等)
*
*(2)toCharArray():将字符串对象中的字符转换为一个字符数组;
* charAt()的用法:提取字符串中指定的字符,该方法返回一个字符值,该字符位于指定索引位置,字符串中第一个字符的索引为0。
*
*(3)containsKey()
* Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况,
* 一种是在集合中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。
* 因此,在Map集合中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断.
*
* (4)Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在Map集合中是一一对应的关系,这一对对象又称作Map中
* 的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象。这样在遍历Map集合时,就可以从每一个键值对(Entry)对
* 象中获取对应的键与对应的值。
* <1>Set ketSet():返回所key构成的Set集合(即遍历所有的key集);
* Set set=map.keySet();
* <2>Collection values():返回所value构成的Collection集合(即遍历所有的value集);
* Collection values= map.values();
* <3>Set entrySet():返回所key-value构成的Set集合(即遍历所有的key-value);
* Set entrySet= map.entrySet();
* <4>Object get(Object key):获取指定的key对应的value;
* <5>boolean containsKey(Object key):判断集合中是否包含指定的key;
* <6>boolean containsValue(Object value):判断集合中是否包含指定的value;
*(5)Collections是一个操作Set、List、Map等集合的工具类。
* Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象
* 设置不可变、对集合对象实现同步控制等方法。
* 排序操作:(均为static方法)
* reverse(List):反转List集合中元素的顺序;
* shuffle(List):对List集合元素进行随机排序;
* sort(List):根据元素的自然顺序对指定List集合元素按升序排序;
* sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序;
* swap(List,int,int):将指定的List集合中的i处元素和j处元素进行交换。
*/
public class CharacterCountTest {
public static void countChar() {
String str = "abbdc22233333ddd";
Map<Character,Integer> map = new HashMap<Character,Integer>();
char[] arr = str.toCharArray();
for (char st : arr) {
if (map.containsKey(st)) {
int k = map.get(st);
k++;
map.put(st, k);
} else {
map.put(st, 1);
}
}
List<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character, Integer>>();
for (Map.Entry<Character, Integer> p : map.entrySet()) {
list.add(p);
}
System.out.println(list);
//以下方法是匿名内部类的代码写法,实现Comparator接口;重写了compare()方法;
Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
return o2.getValue(
JAVA语言(题目:字符串中字符出现次数的统计算法)
最新推荐文章于 2023-04-02 15:36:53 发布