JAVA语言(题目:字符串中字符出现次数的统计算法)

 **题目一:统计一个字符串中每个字符出现的次数,并按出现的次数降序输出统计结果**
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(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dim_boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值