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()方法
如果不使用会出现如下结果
会发现统计的不是单词,是字母
使用之后
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);
}
}