正则表达式/集合

一.正则表达式

1.概述
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
2.语法
(1):字符
x 任意字符
\ 反斜线字符
\t 制表符
\n 换行符
\r 回车符
(2)字符类
[abc] a 或b 或c
[^abc] 任何字符,除了a或b或c
[a-zA-Z] a到z或A到Z,两头的字母包括在内(范围),字母大小写均可
(3)预定义字符类
. 任何字符(实际若要使用.应用.进行转意)
\d 数字[0-9]—>>实际中\d
\w 单词字符[a-zA-Z_0-9]
Javascript:[a-zA-Z0-9]
(4)边界匹配器
$ 行的开头,行的结尾
\b 边界单词
(5)Greedy数量词
X? X,一次或一次也没有
X* X零次或多次
X+ X,一次或多次
X{n} X,恰好nci
X{n,} X,至少nci
X{n,m} X,至少nci,但是不超过m次
3.String类的切割,替换功能

 切割功能
 String[] split(String regex) 
          根据给定正则表达式的匹配拆分此字符串。 
 代码示例
 String str3 = "aa.bb.cc" ;
        //分割功能
        String[] strArray3 = str3.split("\\.") ;
替换功能
 String replaceAll(String regex, String replacement) 
          使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。    
 代码示例
 String str = "helloword123JavaSE45678Javaweb" ;

        //需求:让当前这个字符串中的数字不显示出来
        //定义当前大串中数字定义正则规则 
        //String regex = "[0-9]+" ;
        String regex = "\\d+" ;
        String s = "*" ;

        //public String replaceAll(String regex,String replacement)
        String result = str.replaceAll(regex, s) ;  

4.模式和匹配器的使用
(1)获取模式对象(通过正则表达式)
Pattern p=new Pattern.compile(“正则表达式”);
(2)获取模式匹配器对象
Matcher m=p.matcher(“输入字符”);
(3)调用Match(匹配器类)中的matches()方法判断当前录入对象和正则表达式模式对象是否匹配
m.mathes(p);

//public static Pattern compile(String regex)将给定的正则表达式编译成一个模式对象
        //1)获取模式对象(通过正则规则)
        Pattern p = Pattern.compile("a*b") ;
        //2)通过模式获取匹配器对象,(将一个字符串类型的数据)
        Matcher m = p.matcher("aaaaaab") ;
        //3)调用Match(匹配器类)中的:public boolean matches():判断当前用户录入的字符串是否和当前的正则规则匹配
        boolean flag = m.matches() ;
        System.out.println("flag:"+flag);

        System.out.println("----------------------------");

二.集合

1.集合的引出(对象数组)

Student[] s=new Student();
定义一个学生对象的数组

数组的长度是固定的,所以我们应该使用集合
集合与数组的区别
这里写图片描述

2.集合的基本功能
(1)添加

boolean add(Obiect e)
//给集合添加指定元素(通过查看源码,永远返回ture)

(2)删除

void clear()
删除一个集合的所有元素(暴力删除,不建议使用)
boolean remove(Object o)
//删除一个集合中的指定元素

(3)获取

int size()
//获取集合的元素数
Iterator<E> iterator();
//迭代器

(4)交集

boolean retainAll(Object o)
//A与B的交集保存在A中  若A的元素发生变化返回ture否则返回false

(5)转换

Object[] toArray();
//将集合转化成数组

(6)判断

boolean contains(Object o)
//判断一个集合是否包含指定的单个元素
boolean isEmpty()
//判断集合为空,如果为空则返回ture

3.集合的高级功能

boolean addAll(Collection c)
//添加一个集合中的所有元素
boolean removeAll(Collection c)
//删除一个集合中的所有元素(删除一个就算删除)
boolean containsAll(Object o)
//判断一个集合是否包含另一个集合(包含所有才算包含)

4.集合的遍历
(1)toArray()

//集合中有元素了,将集合转换数组
        Object[] objs = c.toArray() ;
        //遍历对象数组
        for(int x = 0 ; x < objs.length ; x ++){
//          System.out.println(objs[x]);
            //需求:获取集合中元素的同时,获取集合中每一个元素的字符串长度
//          System.out.println(objs[x]+"---"+objs[x].length());
            //要获取字符串长度:需要使用length(),该方法属于String类的特有功能
            String s = (String) objs[x] ;//向下转型
            System.out.println(s+"----"+s.length());

(2)迭代器遍历

代码1
Iterator it = c.iterator() ;
while(it.hasNext()){
            Student s = (Student)it.next() ;
            System.out.println(s.getName()+"---"+s.getAge());
            //java.util.NoSuchElementException
//          System.out.println(((Student)it.next()).getName()+"----"+((Student)it.next()).getAge());
        }
代码二
        for(Iterator it2 = c.iterator();it2.hasNext();){
            Student s = (Student) it2.next() ;
            System.out.println(s.getName()+"---"+s.getAge());

        }

5.迭代器的源码


interace Iterator{
    public abstract boolean hasNext();
    public abstract Object next() ;
}
interface Iterable{
         Iterator iterator();
}
interface Collection extends Iterable{

        Iterator iterator() ;
}

inteface List extends Collection{
        Iterator<E> iterator();
}

class ArrayList implements List{
     public Iterator<E> iterator() {
            return new Itr();
    }

    //内部类的形式
    private class Itr implements Iterator {

        //Itr类:内部类
        public boolean hasNext() {
            ....
        }   

          public Object next() {
          }
    }   


}

6.list集合
(1)List集合是一个有序的集合(存储元素和取出元素是一致的!)
该集合中的元素是可以重复的
特有方法
List集合的特有功能:

添加功能:
            void add(int index, Object element)在列表的指定位置插入指定元素
        删除功能:
            Object remove(int index)移除列表中指定位置的元素,返回被删除的元素
        获取功能:
            ListIterator listIterator():列表迭代器:List集合的专有遍历方式
            Object get(int index)返回列表中指定位置的元素。
        替换
             set(int index,Object element)用指定元素替换列表中指定位置的元素

(2)遍历
1)toArray()
2)Collection集合中的Iterator iterator();
(3)List集合的列表迭代器
ListIterator listIterator()
列表迭代器接口中有以下几个方法:

        boolean hasNext():判断是否有下一个可以迭代的元素(正向遍历)
        Object next():如果有可以遍历的元素,就获取这个元素
        boolean hasPrevious():判断是否有上一个可以迭代的元素(逆向遍历)
        Object  previous():如果有上一个可以迭代的元素,就获取上一个元素
    注意:
        要使用逆向遍历,前提必须有正向遍历存在,直接使用逆向遍历,没有意义!

(4)java.util.ConcurrentModificationException:并发修改异常:
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
原因:当前我们用迭代器去遍历元素,使用集合添加的元素,对于迭代器不知道集合添加了这个元素,所以会发生这个异常
描述:使用迭代器去遍历集合,是不能直接集合添加元素!
解决方案:
1)使用迭代器遍历集合,使用迭代器添加元素
2)使用集合遍历,使用集合添加元素

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值