正则_集合_迭代器

正则表达式

概述:

含义:正则表达式就是一个字符串;可以表示一个系列的字符串是否符合规则;正则中的一些内容都是规定好的特殊字符

正则的好处:

需求:判断一个qq号码是否合法

需遵循的规则:1、纯数字;2、5-14位;3、不能以0开头

System.out.println("343434556".matches("[1-9][0-9]{4,13}"));

好处:正则表达式可以非常简单的表达一些规则内容,不需要写很多判断

弊端:正则表达式的浓度比较高,可读性比较差,写正则时非常容易出问题

正则的引入

正则表达式在使用时需要调用方法来使用

matches("String regex")检查调用使用者字符串是否复合参数中的正则;String regex传递一个正则

正则中都是一些特定字符,使用正则就需要用到这些字符类

字符类:

含义:就是正则中表示范围或者其他规则的字符

解释:无论表示范围多大只对一个字符生效,只对自己前面紧贴的字符生效

罗列

[abc]  a或者b或者c

[^abc] 除了abc其他的都符合规则

[a-m]  表示英文字母abcdefjhijklm

预定义字符类

含义:就是在表示一些比较常用的字符时【a-z】【A-Z】【0-9】【_】就可以将这些常用的字符预定义一个规则,用更加简单的正则符号表示他们

罗列:

.         表示通配符

\d       表示0-9 的数字

\D       表示除了数字

\s        表示空白字符

\S        除了空白字符

\w        表示单词字符[a-zA-Z0-9_]

\W        除了单词字符

System.out.println("9".matches("\\d"));

数量词

就是字符类和预定字符类都只对一个字符生效,所以还需要一些表示数量词的特殊符号

分类:

1、模糊的数量词:

A?  A出现1次或者0次

A+  出现1次或者多次

A*   0次或者多次

2、精确的数量词:

A{n}    表示恰好出现n次

A{n,}    至少出现n次

A{n,m}   至少出现n次至多出现m次 包含n也包含m

正则跟字符串相关的方法

split(string regex)根据正则切割字符串返回到一个数组中

replaceAll(String regex,String s)将调用者中可以匹配到正则的内容替换成指定的内容。

集合

概述:

存放对象的数组:

定义一个Person[]数组,存放一些对象,那么这个数组存放的是这些对象的引用

数组的弊端:1、容量固定,无法扩容;2、没有提供一些方法操作数组,只能手动操作数组,操作起来比较麻烦,我们就希望有一个类型底层存储的是数组,另外也给我们提供一些方法直接操作数组,就不需要我们直接对数组进行操作了,调用这个类型的方法就可以;3、类型比较单一

集合:

什么是集合,也是存放数据的容器,集合就是我们希望的类型。

数组和集合的关系:

相同点:

1、都是装零散数据的容器。

2、数组和集合都需要使用到特定的编号来操作。

3、数组就是集合的底层,集合更加方便的去操作数组

不同点:

1、储存数据类型方面

数组可以储存 基本数据类型和引用数据类型

集合只能存引用数据类型,但是基本数据类型可以通过自动装箱存储到集合中。

2、储存个数方面

数组存储数据的个数有限并且固定

集合顶层可以实现一个自动的扩容。

3、功能方面

数组功能比较少 只能用Object继承过来的功能。

集合提供了很多的功能可以去操作数组。

集合的体系:

体系的简介:

单列集合顶级父接口:单列集合元素之间都是相互独立的个体

collection: 存储单列集合中的都需要具备的方法。

List              有序单列集合的接口

ArrayList      底层是数组操作 顺序存储

LinkedList    链表操作 节点操作

Set              无序单列集合的接口

HashSet

Linkedhashset       哈希表存储 通过哈希码值操作

双列集合顶级父接口:

两个单独的个体组成一个单位作为一个元素。成对出现。

Map

HashMap           哈希表操作

linkedHashmap  哈希表操作

Collection

常用的方法

Add()

Contains()

Isempty()

Remove()

Clear()

Size()

集合和集合之间的操作

addAll(Collection c)  添加参数中集合c的所有元素到调用集合中

Remove(Collection c) 删除参数集合c中在调用集合中存在的元素 (删除两个集合的交集)

RetainAll(Collection c) 保留被调用集合参数集合c中存在的元素 (计算两个集合的交集)

Contatins(collection c) 判断参数c集合中的元素是否在调用集合中全部存在(判断子集)

集合的遍历方式

第一种遍历方式:转数组

Object[] toArray()

可以将集合转换为数组

然后在采用数组遍历的方式间接对集合进行遍历

第二种遍历方式:

迭代器

情况:单列集合中有不同的子接口不同的子接口中又有不同的实现类。每种实现类都有自己实现的方式。针对每种实现类的集合遍历也都是不同的情况。

希望出现一种类型用来专门处理每种集合的遍历。并且这个类型给每个实现类都提供了响应的遍历方法。我们只需要使用这个类型就可以完成不同集合的遍历。

迭代器的含义:在每个接口中都有迭代器的接口。并且每个实现类都对应了一种迭代对象。

获取迭代器:每个接口中都有一个获取对应迭代器的方法 我们可以通过这个方法来获取该集合对应的迭代对象 就可以使用顶层的迭代接口来指向这个引用。我们就不需要关注这个迭代对象是如何实现对集合的遍历。直接使用即可。

Iteroter() 返回一个对象的迭代器对象

迭代器的使用:

顶级的迭代器接口中的方法

1、hasNext()  判断是否有下一个元素

2、Next()  可以获取到集合中的每个元素

3、Remove() 可以删除迭代器判断到的最后一个元素

特点:

1、迭代、更新。一步一步的迭代。

2、不具有全局的视野只能获取周围的信息,短视。

迭代器的注意事项

1、hasNext相关的

不会一直往下走 只会去判断下一步是否有元素。

2、next相关的

会一直往下执行直到判断没有一下个元素才能结束

3、java.util.NoSuchElementException

当迭代器遍历到最后还是要往前走这是就会出现找不到元素的异常。

List

定位:就是collection的子接口

特点:

1、是一个有序的集合接口,因为每个元素有会有一个相应的位置。
2、位置的编号就是它的索引。

3、可以有重复的元素。

特有的功能:索引可以操作集合 它的特有方法都是与索引相关。

Add(int index,Obejct o)

Remove(int index)

Set(int index,Object o)

Get(int index)

List独有的遍历方式

思路:

Size()可以获取当前集合的长度

Get(int index) 可以获取指定位置的元素

就可以结合使用直接对list集合进行遍历。

并发修改的异常

对异常的描述:

当我们在使用迭代器遍历list集合时在去使用list中的方法对集合操作时就会出现这个异常。

ConcurrentModificationException

如何避免异常的出现:

方式1:集合遍历 集合修改

方式2:迭代器遍历 迭代器修改

顶级的迭代器接口中只提供了remove删除的方法没有添加修改相关的方法。

List集合中有listiterator 这样的方法 可以返回list中独有的迭代器对象。

这个类型中就提供了可以添加 add set previous 相关的方法。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值