zoukankan      html  css  js  c++  java
  • 统计字符串数组中每个字符串所出现的次数

    说明:

    1.如题所示,这种类型这我们做项目的时候经常遇到,是非常常见的类型。

    2.这里面向的对象是String 类型。对于其他类型包括自定义的对象也很容易移植,但是对于String和其他基本变量类型由于可以进行大小比较,所以这些类型的数据可以排序后再统计其出现的次数,这样可以用其他方法来进行统计。

    过程:

    1.字符串数组只遍历一次。

    2.设计一个Hash,用于保存Hash后的String值,和其出现的次数。可以用HashMap(key,value)来实现。

    3.对于每一个string ,进行Hash处理。

    4.输出Hash。

    类和方法设计:

    类:StringSameCount.java

       - HashMap map;

    /**

    对于每一个String,插入Hash

    **/

    +hashInsert(String)

    {

      String 已存在:map.put(string,value++);

      String不存在:map.put(string,1);

    }

    +HashMap getHashMap()

    {

      return map;

    }

    最后的StringSameCount.java源代码(测试可用)如下:

    import java.util.HashMap;


    public class StringSameCount {
    private HashMap map;
    private int counter; //用于统计 map中的value

    StringSameCount()
    {
    map=new HashMap<String,Integer>();
    }

    /**
    * 用于在hashmap中插入字符串
    *
    @param string
    */
    public void hashInsert(String string){
    if (map.containsKey(string)){
    counter=(Integer)map.get(string);
    map.put(string,++counter);
    }
    else{
    map.put(string, 1);
    }
    }

    public HashMap getHashMap(){
    return map;
    }
    }


    测试调用如下:

    import java.util.HashMap;
    import java.util.Iterator;

    public class Main {
    public static void main(String[] args) {
    StringSameCount ssc=new StringSameCount();
    ssc.hashInsert("ab");
    ssc.hashInsert("bc");
    ssc.hashInsert("ab");
    ssc.hashInsert("ab");
    ssc.hashInsert("bc");
    ssc.hashInsert("bcd");
    ssc.hashInsert("c");
    HashMap map=ssc.getHashMap();
    Iterator it =map.keySet().iterator();
    String temp;
    while(it.hasNext()){
    temp=(String)it.next();
    System.out.println(temp+"出现了"+map.get(temp)+"次");
    }
    //也可以直接输出map;
    System.out.println(map);

    }
    }

    最后得到的输出结果:

    c出现了1次
    bcd出现了1次
    ab出现了3次
    bc出现了2次
    {c=1, bcd=1, ab=3, bc=2}

  • 相关阅读:
    josn类库引用
    WPF圆角按钮
    C#实现某一属性值变化时触发事件 Form1_changeEvent是对应的事件
    C#winform生成安装包
    特性
    反射可以动态调用对象(一般是类)的名称,属性,方法等。具体见下。重要
    原子操作 和Inerlocked 常用于多线程同步
    spingboot 配置多个数据源报错
    Address already in use: JVM_Bind 端口被占用的几个解决办法
    数据库问题(一)
  • 原文地址:https://www.cnblogs.com/csophys/p/2366401.html
Copyright © 2011-2022 走看看