成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java8統(tǒng)計字符串字母個數(shù)的幾種方法總結(jié)(推薦)-創(chuàng)新互聯(lián)

1.統(tǒng)計字符串字母個數(shù)(并且保持字母順序)

成都創(chuàng)新互聯(lián)專注于泉港企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。泉港網(wǎng)站建設(shè)公司,為泉港等地區(qū)提供建站服務(wù)。全流程按需制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

比如: aabbbbbbbba喔喔bcab cdabc deaaa

目前我做知道的有5種方式噢,如果你還有更好的,歡迎賜教

//方式1
  public static void letterCount1(String s) {
  	s=s.replaceAll(" +", "");
	   //1,轉(zhuǎn)換成字符數(shù)組
	  char c[]=s.toCharArray();
	  
	  Map<Character, Integer> tree=new TreeMap<Character, Integer>();
	  for (int i = 0; i < c.length; i++) {
		//第一次:a,1
		//第二次:a,2 
	   //2,獲取鍵所對應(yīng)的值
		Integer value=tree.get(c[i]);
//		   反編譯:Integer value = (Integer)tree.get(Character.valueOf(c[i]));
	   //3,存儲判斷
		tree.put(c[i], value==null? 1:value+1);
	  }
	  
	  //如果要求結(jié)果格式:a(5)b(4)c(3)d(2)e(1)
	  StringBuilder sbu=new StringBuilder();
	  for(Character key:tree.keySet()){
		Integer count=tree.get(key);
		sbu.append(key).append("(").append(count).append(")");
	  }
	  //將sbu轉(zhuǎn)換為字符串
	  System.out.println(sbu.toString());
	}
   
  //方式2 使用流
  //這個在測試特殊字符,比如\  \n時,他的順序會不對,這個是Map造成的
  //解決辦法使用TreeMap
  public static void letterCount2(String s) {
  	s=s.replaceAll(" +", "");
  	TreeMap<String, Long> result = Arrays.stream(s.split(""))
    		             .sorted()
//                     .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
                     .collect(Collectors.groupingBy(Function.identity(),TreeMap::new,Collectors.counting()));
    System.out.println(result);
  	
  }
  
  //方式3 使用Collections.frequency
  //其實就是字符串變成集合存每個字串,把每個字串循環(huán)跟集合比較
  public static void letterCount3(String s) {
  	s=s.replaceAll(" +", "");
  	List<String> list=Arrays.asList(s.split(""));
  	Map<String,Integer> map=new TreeMap<String, Integer>();
  	for (String str : list) {
  		map.put(str, Collections.frequency(list, str));
		}
  	System.out.println(map);
  }
  
  //方式4
  public static void letterCount4(String s) {
  	s=s.replaceAll(" +", "");
  	String[] strs = s.split("");
  	Map<String,Integer> map=new TreeMap<String, Integer>();
  	for (String str : strs) {
  		map.put(str, stringCount(s, str));
		}
  	System.out.println(map);
  }
  
  
  //方式5
  public static void letterCount5(String s) {
  	s=s.replaceAll(" +", "");
  	String[] strs = s.split("");
  	Map<String,Integer> map=new TreeMap<String, Integer>();
  	for (String str : strs) {
  		map.put(str, stringCount2(s, str));
		}
  	System.out.println(map);
  }
  
  
  
  //巧用split
 	public static int stringCount(String maxstr, String substr) {
		// 注意
		// 1.比如qqqq,沒有找到,則直接返回這個字符串
		// 2.比如qqqjava,末尾沒有其他字符,這時也不會分割,所以可以添加一個空格
		// 3.java11開頭沒有字符,沒有關(guān)系,自動空填充
		// 4.對于特殊字符,要注意使用轉(zhuǎn)義符
		int count = (maxstr + " ").split(substr).length - 1;
		// System.out.println("\"" + minstr + "\"" + "字符串出現(xiàn)次數(shù):" + count);
		return count;
	}

  //如果要不區(qū)分大小寫,則compile(minstr,CASE_INSENSITIVE)
	public static int stringCount2(String maxstr, String substr) {
		int count = 0;
		Matcher m = Pattern.compile(substr).matcher(maxstr);
		while (m.find()) {
			count++;
		}
    return count;
	}
  

文章標(biāo)題:java8統(tǒng)計字符串字母個數(shù)的幾種方法總結(jié)(推薦)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article32/jessc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、動態(tài)網(wǎng)站面包屑導(dǎo)航、網(wǎng)頁設(shè)計公司網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
静宁县| 沿河| 泰和县| 汉中市| 德兴市| 樟树市| 延长县| 西昌市| 松溪县| 永修县| 五台县| 仪陇县| 桃江县| 石景山区| 海林市| 六安市| 邛崃市| 汕尾市| 黎城县| 万山特区| 朔州市| 五指山市| 大理市| 陵川县| 镶黄旗| 邵东县| 漳州市| 阳东县| 汉川市| 石泉县| 曲靖市| 会东县| 丰城市| 肥西县| 上蔡县| 兰考县| 罗平县| 峨眉山市| 宜阳县| 千阳县| 溧阳市|