`
freewxy
  • 浏览: 336481 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

字符串中字符出现个数统计

阅读更多
public List<TreeNode> getData(String ss){
		TreeData data=new TreeData();
		TreeNode<TreeData> node=new TreeNode();
		List<TreeNode> datas=new ArrayList();
	    Properties p = new Properties();
	     Enumeration en = p.propertyNames();
	     String key=null;
	     for (int i = 0; i < ss.length(); i++) {
	         int value=1; 
	         //valuesOf()是将值转化为字符串charAt(i)返回指定位置的字符
	         key = String.valueOf(ss.charAt(i));
	         if(p.containsKey(key)){
	        	 //parseInt() 函数可解析一个字符串,并返回一个整数
	                 value=Integer.parseInt(p.getProperty(key));
	                 p.setProperty(key, String.valueOf(value+1));
	         }
	         else{   
	                 p.setProperty(key, String.valueOf(value));
	         }
	         data.s=key;
	         data.rate=value;
	         node.obj=data;
	         datas.add(node);
	         //System.out.println("key: "+key+"  value: "+p.getProperty(key));
	      }
	        System.out.println(p);
		return datas;
	}

有问题的代码。但是可以实现对字符串每个字符出现个数的统计
另一种统计方式:
public List<TreeData> getDatas(String s){
		List<TreeData> datas=new ArrayList();
	    for(int i=0;i<s.length();i++){          
//顺序遍历字符串
	    	char c=s.charAt(i);                  
 //获取s指定位置的字符
	    	String cs=""+c;                       
//将字符转换为字符串
	    	boolean exits=false;                  
//判断是否已经存在此字符串
	    	for(int t=0;t<datas.size();t++){      
//遍历datas队列,判断在datas队列中是否已经存在该字符
	    		TreeData tem=new TreeData();
	    		tem=datas.get(t);                 
//获取当前队列中的值
	    		if(tem.s.equals(cs)){            
 //队列中已经存在此字符
	    			tem.rate++;                  
 //频率累加
	    			exits=true;
	    			break;
	    		}
	    	}	
	    	if(!exits){                          
 //如果不存在,创建一个TreeData对象,添加到队列中去
    			TreeData data=new TreeData();
    			data.s=cs;
    			data.rate=1;
    			datas.add(data);
	    	} 	
	    }
	     return datas;
	}

  刚才看到一个用HashMap来统计字符串中字符出现次数的代码,思路不错,也一并搞上来对比着学习一下
public class StrCalculate {
    //定义一个主函数
 public static void main(String args[]) {
  // 创建一个映射对象
  java.util.Map<Character, Integer> map = new java.util.HashMap<Character, Integer>();
        //定义一个字符串
  String str = "sadsafddasdscv";
  //将此字符串转换为一个新的字符数组
  char[] s = str.toCharArray();
//     System.out.println(s1.length);
 
  // 往映射中放数据
  for (int i = 0; i < s.length; i++) {
   char s1 = s[i];
   
   //定义一个变量
   int t=0;
   for (int j = 0; j < s.length; j++) {
    if (s[i]==s[j]) {
     t++;
    }
   }
   // 将键值对放到map中
   map.put(s1, t);
  }

  // 遍历
  // 1.得到键的Set集合
  java.util.Set<Character> keys = map.keySet();
  // 得到迭代器
  java.util.Iterator<Character> iter = keys.iterator();
  // 迭代set集合
  while (iter.hasNext()) {
   // 取出一个
   char key = iter.next();
   // 根据key得到Value
   int value = map.get(key);
   System.out.println("字母"+key + " = "+"出现次数" + value);
  }

 }

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics