zoukankan      html  css  js  c++  java
  • TreeMap排序实例

       现有一篇英文作文,让你从中找出出现频率最高的n个单词

    As can be seen from the chart that money value of annual global electronic transactions id increasing gradually in the seven years. In 1997, the money value of global electronic commerce transactions is US$ 2.6 billion, while the number reaches US$1000 billion, 500 times that of 1997. why is electronic commerce booming nowadays?s=s.toLowerCase() Several factors contribute to this phenomenon. First, the availability of computer is the foremost cause. The rapid development of computer technology enables everybody to have access to computer and Internet. Internet now no more a stranger to common people. Second, the technology of Internet is becoming more and more mature. People, who at first do not trust business transactions on Internet, now become convinced that doing business on Internet is very convenient and effective. Thirdly, electronic commerce is the fastest way so far to make transactions across far distance. It makes it possible to do business at home and it saves time and unnecessary formalities as well. That is why electronic commerce is preferable to the prosperity of world economy and it also give birth to SOHO, a special group of people working at home. The trend towards a promising e-commerce is inevitable. Therefore let's get prepared to embrace this irretrievable trend.

       思路:首先用正则表达式将作文分成多个英语单词,然后再用map映射记录每个单词并计算次数,最后用TreeMap将其按出现的次数进行排序。

      

     1 package text;
     2 import java.util.*;
     3 import java.util.regex.Matcher;
     4 import java.util.regex.Pattern;
     5 public class text7 {
     6 
     7     public static void main(String[] args) {
     8         
     9         String s="As can be seen from the chart that money value of annual global electronic transactions id increasing gradually in the seven years. In 1997, the money value of global electronic commerce transactions is US$ 2.6 billion, while the number reaches US$1000 billion, 500 times that of 1997. why is electronic commerce booming nowadays?s=s.toLowerCase() Several factors contribute to this phenomenon. First, the availability of computer is the foremost cause. The rapid development of computer technology enables everybody to have access to computer and Internet. Internet now no more a stranger to common people. Second, the technology of Internet is becoming more and more mature. People, who at first do not trust business transactions on Internet, now become convinced that doing business on Internet is very convenient and effective. Thirdly, electronic commerce is the fastest way so far to make transactions across far distance. It makes it possible to do business at home and it saves time and unnecessary formalities as well. That is why electronic commerce is preferable to the prosperity of world economy and it also give birth to SOHO, a special group of people working at home. The trend towards a promising e-commerce is inevitable. Therefore let's get prepared to embrace this irretrievable trend.";
    10         Pattern p=Pattern.compile("[a-z|']+");                //正则表达式的比较器
    11         Matcher m=p.matcher(s);                               //要找的文章
    12         Map<String,Integer> map1=new HashMap<String,Integer>();       //定义一个hashmap键中存放单词
    13         while(m.find()){ 
    14             String a=m.group(); 
    15             if(map1.containsKey(a)){                                 //值中存放次数
    16                  map1.put(a,map1.get(a)+1);
    17             }
    18             else{
    19                  map1.put(a,1);
    20             }
    21         }
    22         Map<String,Integer> map2=new TreeMap<String,Integer>(new Mycomparator(map1));   //定义一个treemap并给出排序的比较器
    23         map2.putAll(map1);                                                               //向其中添加元素    
    24         Set<String> set=map2.keySet();
    25         Iterator<String> it=set.iterator();                                              //迭代器输出
    26         while(it.hasNext()){
    27             String str=it.next();
    28             System.out.println(str+":"+map2.get(str));
    29         }
    30         //System.out.println(map2);
    31         
    32     
    33 
    34     }
    35 
    36 }
    37 class Mycomparator implements Comparator<String>{
    38     Map<String,Integer> map;
    39     Mycomparator(Map<String,Integer> map)
    40     {
    41         this.map=map;
    42     }
    43     @Override
    44     public int compare(String o1, String o2) {             //比较函数:首先按次数排序,如果次数相同按单词长度进行排序
    45         
    46         if(o1==null||o2==null)
    47             return 0;
    48         if(map.get(o2)-map.get(o1)!=0)
    49               return map.get(o2)-map.get(o1);
    50         else{
    51             return o1.compareTo(o2);
    52         }
    53             
    54     }
    55     
    56 }
  • 相关阅读:
    IDEA生成可执行的jar文件
    Android ROM包定制(解包,增删模块,打包)
    frida的用法--Hook Java代码篇
    C语言sprintf和sscanf函数用法
    C语言memcpy函数的用法
    自己动手编译Android(LineageOS)源码
    j2ee高级开发技术课程第三周
    linux内核学习之全局描述符表(GDT)(二)
    螺旋队列顺时针方向 和逆时针方向的实现
    zigzag数组:输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组
  • 原文地址:https://www.cnblogs.com/llsq/p/7439999.html
Copyright © 2011-2022 走看看