Java学习(5)

正则表达式简单了解

定义:

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

作用:

正则表达式主要用于字符串中为方便字符串操作,很多地方不使用正则表达式也能达到目的,但是可能麻烦很多。

split()方法

split(String regex):可以分割字符串,参数regex称为分割符,可以使用正则表达式来表示

例:

package com.Sentance;

import java.util.*;

public class Sentance {
    private String Sentance1;
    private Map<String, Integer> map1 = new HashMap<String, Integer>();
    public String getSentance1 () {
        return Sentance1;
    }

    public void setSentance1 (String sentance1) {
        this.Sentance1 = sentance1;
    }
    public void creat() {
        String[] arr = Sentance1.split (" ");
        for(int i = 0; i < arr.length; i++) {
            if (! map1.containsKey (arr[i])) {
                map1.put (arr[i], 1);
            }
            else {
                int num = map1.get (arr[i]);
                map1.put (arr[i], ++num);
            }
        }

    }
    public void statistics() {
        creat ();
        System.out.println ("统计单词出现的个数,结果如下");
        Set<String> set = map1.keySet ();
        for(Iterator<String> i1 = set.iterator (); i1.hasNext (); ) {
            String key = i1.next ();
            Integer value = map1.get (key);
            System.out.println (key + "出现的次数为" + value);

        }
    }
    public void testSentence () {
        Scanner sc = new Scanner (System.in);
        System.out.println ("请输入一句英语,单词用空格隔开");
        Sentance sen = new Sentance ();
        sen.setSentance1 (sc.nextLine ());
        sen.statistics ();
    }

}

在这一个类中的creat()方法就使用类split()方法

如果不使用会出现如下结果

java 正则匹配中英文符号 java正则表达式匹配英文_开发语言


会发现统计的不是单词,是字母

使用之后

java 正则匹配中英文符号 java正则表达式匹配英文_java_02

Comparator接口与compare()方法

在对TreeMap进行简单应用时,发现TreeMap的一个有参构造方法如下:

public TreeMap(Comparator<? super K> comparator) {
        this.comparator = comparator;
    }

他的参数类型是Comparator<? super K> 而Comparator是util包中的一个接口

其中在这个接口中必须要实现的方法是int compare(T o1, T o2);

1.compare()方法的实现可以用于对数组进行排序,compare方法的不同实现对应着不同的排序准则;

2.这里详细解释一下比较规则,如果在一个list集合{1, 0, 0, 2}中选这种比较规则,o1是每次要进行比较的参数,o2是每次新来的参数,举个例子:o1会一直是第一个元素1不会变,每次比完以后,o2都会进行替换,依次替换为:0, 0, 2
这里要返回的是一个int值,如果返回为true,o2会在o1的上面,返回为false,o2会在o1的下面,反正每次比较都是在和o1进行比较

3.排序规则:如果传递的参数是第一个是o1,第二个是o2,比较的时候也是用o1-o2进行比较,那么就是升序;如果比较的时候是用反过来o2-o1进行比较,那么就是降序

实现的实例:

package com.Library;

import java.util.TreeMap;
import java.util.Comparator;

public class Library {
    private TreeMap<String, Book> map_1 = new TreeMap<String, Book> (new MyComparator());
    private class Book {
        private String bookno;
        private String bookName;
        private String auther;
        private int price;

        public String getBookno () {
            return bookno;
        }
        public void setBookno (String bookno) {
            this.bookno = bookno;
        }

        public String getBookName () {
            return bookName;
        }
        public void setBookName (String bookName) {
            this.bookName = bookName;
        }
        public String getAuther () {
            return auther;
        }
        public void setAuther (String auther) {
            this.auther = auther;
        }

        public int getPrice () {
            return price;
        }
        public void setPrice (int price) {
            this.price = price;
        }
        @Override
        public String toString() {
            return "Book[bookno" + bookno + " bookName=" + bookName + " auther=" + auther + " price=" + price + "]";
        }
        public Book() {
        }
        public Book(String bookno, String bookName, String auther, int price) {
        super();
        this.bookno = bookno;
        this.bookName = bookName;
        this.auther = auther;
        this.price = price;
        }

    }
    private class MyComparator implements Comparator<String> {
        @Override
        public int compare(String o1, String o2) {
            if(o1.length () == o2.length ()){
                return o1.compareTo (o2);
            }
                return o1.length () - o2.length ();
        }

    }
    private void creatLibrary() {
        map_1.put ("B45678", new Book ("B14233", "三国演义", "罗贯中", 56));
        map_1.put ("B00678", new Book ("B03642", "水浒传", "施耐庵", 50));
        map_1.put ("D00098", new Book ("D02567", "西游记", "吴承恩", 55));
        map_1.put ("A15678", new Book ("A15753", "红楼梦", "曹雪芹", 60));
        map_1.put ("X01111", new Book ("X01111", "JAVA编程思想", "kobe", 130));
    }
    public void testLibrary() {
        creatLibrary ();
        System.out.println ("LibraryBook" + map_1);
    }
}

java 正则匹配中英文符号 java正则表达式匹配英文_开发语言_03