很多朋友对于java hashmap用法和HashMap和Hashtable的区别不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
这道题怎么做用java HashMap或者List
这是初级程序员的题目,意在测试其队集合的理解,集合遍历,集合排序,以及java中面向对象。
集合遍历for循环或者迭代器;集合排序的方式是集合元素实现Comparable接口的compare方法,然后直接调用Collections.sort就可以直接对集合排序,也可以通过集合遍历来排序。怎么方便怎么来
java concurrenthashmap put的时候要加锁吗
不需要加锁,JavaConcurrentHashMap内部已经实现了锁机制,ConcurrentHashMap类中包含两个静态内部类HashEntry和Segment。HashEntry用来封装映射表的键/值对;Segment用来充当锁的角色,每个Segment对象守护整个散列映射表的若干个桶。每个桶是由若干个HashEntry对象链接起来的链表。一个ConcurrentHashMap实例中包含由若干个Segment对象组成的数组。
Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数
目前列出四种方式,希望对你有帮助。
数组的索引法使用流(使用TreeMap)巧用split巧用Pattern一、实现代码importjava.util.*;importjava.util.function.Function;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjava.util.stream.Collectors;/***@author米兜*@description*@date2020/6/2622:23*@modifiedby*/publicclassSum{publicstaticvoidmain(String[]args){Stringstr="guanzhuchengxuyuanmidou";System.out.println("-----------1.数组的索引法【start】-----------");count1(str);System.out.println("-----------1.数组的索引法【end】-----------");System.out.println("---------------------------------------------");System.out.println("-----------2.使用流(使用TreeMap)【start】-----------");count2(str);System.out.println("-----------2.使用流(使用TreeMap)【end】-----------");System.out.println("---------------------------------------------");System.out.println("-----------3.巧用split【start】-----------");count3(str);System.out.println("-----------3.巧用split【end】-----------");System.out.println("---------------------------------------------");System.out.println("-----------4.巧用Pattern【start】-----------");count4(str);System.out.println("-----------4.巧用Pattern【end】-----------");}/***@author米兜*@param*@description1.数组的索引法*@date2020/6/2622:51*/publicstaticvoidcount1(Stringstr){//创建26个空间大小的数组,存放26个字母int[]nums=newint[26];for(chari:str.toCharArray()){//自动将chari转化成ascall码if(i>=97&&i<=122){//利用数组的索引进行存储nums[i-97]++;}}for(inti=0;i<nums.length;i++){if(nums[i]!=0){//i加上97并且再转化为char类型就可以显示相应的字符charj=(char)(i+97);System.out.println("字符:"+j+"===="+"个数"+nums[i]);}}}/***@author米兜*@param*@description2.使用流(使用TreeMap/这里也是用map)*@date2020/6/2622:51*/publicstaticvoidcount2(Stringstr){TreeMap<String,Long>result=Arrays.stream(str.split("")).sorted()//.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));.collect(Collectors.groupingBy(Function.identity(),TreeMap::new,Collectors.counting()));Iteratoriter=result.entrySet().iterator();while(iter.hasNext()){Map.Entryentry=(Map.Entry)iter.next();System.out.println("字符:"+(String)entry.getKey()+"===="+"个数"+(Long)entry.getValue());}}/***@author米兜*@param*@description3.巧用split*@date2020/6/2622:51*/publicstaticvoidcount3(Stringstr){ArrayList<String>arrayList=newArrayList<>();for(charc:str.toCharArray()){intcount=str.split(String.valueOf(c)).length-1;//最后一个字符串split要+1if(str.substring(str.length()-1,str.length()).equals(String.valueOf(c))){count++;}if(arrayList.contains(String.valueOf(c))){continue;}System.out.println("字符:"+String.valueOf(c)+"===="+"个数"+count);arrayList.add(String.valueOf(c));}}/***@author米兜*@param*@description4.巧用Matcher*@date2020/6/2622:51*///如果要不区分大小写,则compile(minstr,CASE_INSENSITIVE)publicstaticvoidcount4(Stringstr){ArrayList<String>arrayList=newArrayList<>();for(charc:str.toCharArray()){intcount=0;Matcherm=Pattern.compile(String.valueOf(c)).matcher(str);if(arrayList.contains(String.valueOf(c))){continue;}while(m.find()){count++;}System.out.println("字符:"+String.valueOf(c)+"===="+"个数"+count);arrayList.add(String.valueOf(c));}}}
二、运行结果-----------1.数组的索引法【start】-----------
字符:a====个数2
字符:c====个数1
字符:d====个数1
字符:e====个数1
字符:g====个数2
字符:h====个数2
字符:i====个数1
字符:m====个数1
字符:n====个数3
字符:o====个数1
字符:u====个数5
字符:x====个数1
字符:y====个数1
字符:z====个数1
-----------1.数组的索引法【end】-----------
---------------------------------------------
-----------2.使用流(使用TreeMap)【start】-----------
字符:a====个数2
字符:c====个数1
字符:d====个数1
字符:e====个数1
字符:g====个数2
字符:h====个数2
字符:i====个数1
字符:m====个数1
字符:n====个数3
字符:o====个数1
字符:u====个数5
字符:x====个数1
字符:y====个数1
字符:z====个数1
-----------2.使用流(使用TreeMap)【end】-----------
---------------------------------------------
-----------3.巧用split【start】-----------
字符:g====个数2
字符:u====个数5
字符:a====个数2
字符:n====个数3
字符:z====个数1
字符:h====个数2
字符:c====个数1
字符:e====个数1
字符:x====个数1
字符:y====个数1
字符:m====个数1
字符:i====个数1
字符:d====个数1
字符:o====个数1
-----------3.巧用split【end】-----------
---------------------------------------------
-----------4.巧用Pattern【start】-----------
字符:g====个数2
字符:u====个数5
字符:a====个数2
字符:n====个数3
字符:z====个数1
字符:h====个数2
字符:c====个数1
字符:e====个数1
字符:x====个数1
字符:y====个数1
DisconnectedfromthetargetVM,address:'127.0.0.1:53939',transport:'socket'
字符:m====个数1
字符:i====个数1
字符:d====个数1
字符:o====个数1
-----------4.巧用Pattern【end】-----------
Processfinishedwithexitcode0
三、总结冰冻三尺非一日之寒,滴水石穿非一日之功。
关于java hashmap用法到此分享完毕,希望能帮助到您。