java基础Map遍历
map遍历方法:
1.通过keySet取出Map中的数据,然后for-each循环
2.通过EntrySet取出,foreach循环
3.KeySet取出,Iterator遍历
4.通过EntrySet取出,Iterator遍历
1 /**Map的四种遍历方式*/ 2 //1.直接打印:{name=null, id=null, age=0} 3 System.out.println(map); 4 //2.通过keySet取出Map中的数据,然后for-each循环: 5 //key:name--value:null key:id--value:null key:age--value:0 6 Set<String> keySet=map.keySet();//得到set集合 7 for (String key:keySet){ 8 System.out.print("key:"+key+"--value:"+map.get(key)+" "); 9 } 10 System.out.println(); 11 //3.通过EntrySet取出,foreach循环 12 //key:name--value:null key:id--value:null key:age--value:0 13 Set<Map.Entry<String,Object>> entrySet=map.entrySet();//得到set集合 14 for (Map.Entry<String ,Object> entry:entrySet){ 15 System.out.print("key:"+entry.getKey()+"--value:"+entry.getValue()+" "); 16 } 17 /**迭代器遍历*/ 18 //4.KeySet取出,Iterator遍历 19 Iterator<String>iterator1=keySet.iterator();//map.keySet(),得到set集合,可以通过迭代器遍历 20 while (iterator1.hasNext()){ 21 String key=iterator1.next(); 22 System.out.println("key:"+key+" value"+map.get(key)); 23 } 24 25 //5.通过EntrySet取出,Iterator遍历 26 Iterator<Map.Entry<String,Object>> iterator2=entrySet.iterator();//map.entrySet(),得到set集合,得到set集合,可以通过迭代器遍历 27 while (iterator2.hasNext()){ 28 Map.Entry<String,Object> entryIterator=iterator2.next(); 29 System.out.println("key:"+entryIterator.getKey()+" value:"+entryIterator.getValue()); 30 }
统计文件中关键字:
1 package MapDemo; 2 /** 3 *统计文件中关键字的个数,利用Map 4 *@author:Archer-LCY 5 *@date:2018年3月13日下午1:12:45 6 */ 7 8 import java.io.BufferedReader; 9 import java.io.FileReader; 10 import java.util.ArrayList; 11 import java.util.Arrays; 12 import java.util.HashMap; 13 import java.util.HashSet; 14 import java.util.List; 15 import java.util.Map; 16 import java.util.Set; 17 import java.util.TreeMap; 18 19 public class CountLKeyword { 20 public static void main(String[] args) { 21 Count_keyword(); 22 } 23 24 public static void Count_keyword() { 25 final String fileName="src/MapDemo/CountLKeyword.java"; 26 /*关键字*/ 27 final String keywords="package,inport,public,class,static,void ,final,private,new,try.catch,while,null,if,continue,return"; 28 //1、获得Java源文件中的字符串(行集合,StringBuffer) 29 List<String> contentList=ReadSourceFile(fileName); 30 Set<String> keywordsSet=new HashSet<>(); 31 keywordsSet.addAll(Arrays.asList(keywords.split(",")));//以“,”分割 32 //2、遍历集合关键字,统计每个集合在字符串中出现的次数--将关键字以键-值的方式存放在Map集合中 33 Map<String , Integer> keywordsMap=new HashMap<>(); 34 for(String line:keywordsSet) {//外循环遍历关键字集合 35 for(String keyword:contentList) {//内循环遍历,源代码所有行 36 //统计每一行,keyword出现的次数(进行累加) 37 38 int count=getKeywordcounts(line,keyword); 39 if(count==0) continue ; 40 if(keywordsMap.containsKey(keyword)) { 41 int oldCount =keywordsMap.get(keyword).intValue(); 42 keywordsMap.put(keyword, new Integer(count+oldCount)); 43 }else { 44 //将count放到map集合中 45 keywordsMap.put(keyword, count);//关键字出现一次直接添加即可 46 } 47 } 48 } 49 50 //3、遍历Map集合(以关键字出现的次数来排序) 51 for(java.util.Map.Entry<String, Integer> entry: keywordsMap.entrySet()) { 52 System.out.println(entry.getKey()+"\t"+entry.getValue()); 53 } 54 //排序显示 55 System.out.println("----------------------------------------------------"); 56 Map<String, Integer> treeMap=new TreeMap<>(new MyTreeComparator(keywordsMap)); 57 treeMap.putAll(keywordsMap); 58 for(java.util.Map.Entry<String, Integer> entry: keywordsMap.entrySet()) { 59 System.out.println(entry.getKey()+"\t"+entry.getValue()); 60 } 61 } 62 63 private static int getKeywordcounts(String line ,String keyword) { 64 if(line==null||line.length()==0) 65 return 0; 66 //注释跳过 67 if(line.startsWith("/*")||line.startsWith("*")||line.startsWith("//")||line.endsWith("*/")) 68 return 0; 69 int count=0; 70 String strLine=new String(line); 71 int index=-1; 72 while((index=strLine.indexOf(keyword))!=-1) { 73 count++; 74 strLine=strLine.substring(index+keyword.length()+1); 75 } 76 return count; 77 } 78 79 /** 80 * 读取Java源文件,以字符串方式返回源文件所以内容 81 * @param fileName 82 * @return 83 */ 84 private static List<String> ReadSourceFile(String fileName){ 85 List<String> countentList =new ArrayList<>(); 86 try ( 87 FileReader fReader=new FileReader(fileName); 88 BufferedReader bReader=new BufferedReader(fReader); 89 ){ 90 String line=null; 91 while((line=bReader.readLine())!=null){ 92 if(line.trim().length()==1) 93 continue; 94 countentList.add(line); 95 } 96 97 } catch (Exception e) { 98 e.printStackTrace(); 99 } 100 return countentList; 101 } 102 }