将数组中的字符按出现次数多少排序输出

原题

一个有N个元素的集合,其中有相同元素。
需要得到按重复元素多少排序的新集合。
输入  {"a","b","c","c","a","c"}
输出  {"c","a","b"}

求算法

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class ArrSort {

	public static void main(String[] args) {
		String[] strArr = {"a","b","c","c","a","c"};
		System.out.println(arraySort(strArr));

	}

	public static String arraySort(String[] arr) {
		// 定义map,存放数组中的字符及出现次数
		Map<String, Integer> map = new HashMap<String, Integer>();
        
		// 遍历数组,将字符及出现次数存放map中
        for (String str : arr) {
            Integer count = map.get(str);
            if (null != count) {
                map.put(str, count + 1);
            } else {
                map.put(str, 1);
            }
        }
        
        // 定义list,存放map中的entry
        List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
        list.addAll(map.entrySet());
        
        // 对list中的entry,按照value值进行降序排列
        Collections.sort(list, new Comparator<Entry<String, Integer>>(){
            public int compare(Entry<String, Integer> arg0, Entry<String, Integer> arg1) {
                return arg1.getValue().compareTo(arg0.getValue());
            }
        });
        
        // 定义StringBuffer,存放返回的字符串
        StringBuffer retStr = new StringBuffer();
        for (Entry<String, Integer> entry : list) {
            retStr.append(entry.getKey()).append(",");
        }
        
        // 将字符串组装为需要的格式返回
        return "{" + retStr.delete(retStr.length()-1, retStr.length()).toString() + "}"; 
	}
}



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值