栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

根据出现次数的升序对数组排序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据出现次数的升序对数组排序

这是一种开始的方法,可以基于以下想法:对映射中初始数组中每个整数发生的次数进行计数。计算完所有数字后,请按升序对地图进行排序,然后打印地图的输出:

import java.util.ArrayList;import java.util.HashMap;import java.util.TreeMap;public class SortCount {    public static void main(String[] args) {        int nums[] = {0,0,0,1,3,3,2,1,3,5,6,0};        HashMap<Integer,Integer> counts = new HashMap<Integer,Integer>();        for(int i = 0; i < nums.length; i++) { if(counts.containsKey(nums[     Integer c = counts.get(nums[i]) + 1;     counts.put(nums[i], c); } else {     counts.put(nums[i],1); }        }        ValueComparator<Integer,Integer> bvc = new ValueComparator<Integer,Integer>(counts);        TreeMap<Integer,Integer> sortedMap = new TreeMap<Integer,Integer>(bvc);        sortedMap.putAll(counts);        ArrayList<Integer> output = new ArrayList<Integer>();        for(Integer i : sortedMap.keySet()) { for(int c = 0; c < sortedMap.get(i); c++) {     output.add(i); }        }        System.out.println(output.toString());    }}

它使用一个

Comparator
类来比较中的值
Map

import java.util.Comparator;import java.util.Map;public class ValueComparator<T1,T2 extends Comparable<T2>> implements Comparator<T1> {    Map<T1,T2> base;    public ValueComparator(Map<T1,T2> base) {        this.base = base;    }    @Override    public int compare(T1 k1, T1 k2) {        T2 val1 = base.get(k1);        T2 val2 = base.get(k2);        return val1.compareTo(val2);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号