ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

牛客 HJ3 明明的随机数 (Java 哈希表排序)

2022-07-31 18:32:57  阅读:104  来源: 互联网

标签:Java String int 数组 牛客 哈希 new java 排序


 

 

 

 

思路: 法1:使用哈希表,可以保证无重复值。然后取出所有value放入数组。 接着数组排序。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;


public class Main {
    public static void main(String[] args) throws IOException {
        int len = 0;//输入的个数N
        int element = 0;
        Object[] number = {0};//无重复元素的数组
        
        
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        Map<Integer,Integer> ages = new HashMap<Integer,Integer>();
       
        //System.out.println(br.readLine());
        //System.out.println(br.readLine());
        len = Integer.parseInt(br.readLine());//首行为元素个数
        //System.out.println(len);
        for(int num=0;num<len;num++){//将数值放入哈希表。确保元素不重复
            element = Integer.parseInt(br.readLine());
            //System.out.println(element);
            if(ages.containsKey(element)){//若哈希表中有重复元素
                continue;
            }else{//若不重复则放入哈希表
                ages.put(element,num);
                //System.out.println(num+","+element);
            }
        }
        //哈希表排序
        number = ages.keySet().toArray();//将KeySet返回的key值集合转为数组
        Arrays.sort(number);//排序
        for(Object key : number){//打印数组元素
            System.out.println(key);
        }
    }
}

 

法2:还是暴力拆解呗,万能暴力。 每拿一个数,都循环看看有没有重复,没有重复就放入。 最后数组排序       谷歌: 1.String和int互转 JAVA 中 string 和 int 互相转化 | 菜鸟教程 (runoob.com) String转int:  
int i = Integer.parseInt([String]);//i = Integer.parseInt([String],[int radix]);
int i = Integer.valueOf(my_str).intValue();

int转String:

String s = String.valueOf(i);
String s = Integer.toString(i);
String s = ""+i;;

 

2.java集合转数组 (14条消息) java集合转数组(Collection转array)_皮皮go的博客-CSDN博客_java 集合转数组  
Object[] toArray();

 

  3.哈希表排序 (14条消息) Java HashMap按key排序和按value排序的两种简便方法_xHibiki的博客-CSDN博客_java哈希表排序 按Key值: KeySet()方法将哈希表中所有key值放入集合 Set.toArray(arr)方法将集合转为数组 Arrays.sort(arr)数组排序  
Set set = ages.KeySet();//拿到Key集合
Object[] arr = set.toArray();//集合转数组
Arays.sort(arr);//数组排序
for(Object key:arr){//打印出排序好的数组
    System.out.println(key);
}

 

按Value值: 先得到entrySet。然后将Set转成List。再重写list的比较器得到结果。  
//拿到entrySet并转list
List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(ages.entrySet());

//list排序
//法1 重写Comparator比较器
list.sort(new Comparator<Map.Entry<String,Integer>>(){
    @Override
    public int compare(Map.Entry<String,Integer> o1,Map.Entry<String,Integer> o2){
        return o2.getValue().compareTo(o1.getValue());
    }
});
//法2 重写Collection.sort()排序
Collection.sort(list,new Comparator<Map.Entry<String,Integer>>(){
    @Override
    public int compare(Map.Entry<String,Integer>o1, Map.Entry<String,Integer> o2){
        return o2.getValue().compareTo(o1.getValue());
    }
})

 

 

标签:Java,String,int,数组,牛客,哈希,new,java,排序
来源: https://www.cnblogs.com/JolyneSpace/p/16537765.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有