最近,一位同学向我提出来一个数组排序的算法题,由于这个需求并不常用,所以感到比较新奇, 于是抽时间自己写了一个比较笨拙的算法,基本上是实现了需求。应该还有重构的空间,有时间在优化吧。为了日后能够复习,把它留在微博里方便日后参考,有高手的欢迎给优化优化。
/**
* @projectname: study-part01-OOP
* @author: h2j
* @date: 2018年12月6日
*/
package com.h2j.oop.array.sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* @author h2j
* 数组项根据重复频率和大小进行排序算法
* 主要考察的是Map结构的理解和应用,以及比较类型的使用
*/
public class ArraySortTest {
/**
* 需求:对数组中的值进行排序,规则:数组中出现频数最多的值排在前面,如果频数相同,数值大的排前面
* Integer[] intArray={1,2,3,5,5,7,7,7,7,3,3,2,2,6,6}
* hashCode=
* equals!=
* 可惜用不了这两个方法,只能用Comparator接口和Arrays类
* @param args
*/
public static void main(String[] args) {
//定义数组
Integer[] intArray = {1,3,5,4