第十三天笔记

正则表达式:是指一个用来描述或者匹配一系列字符或者语句的规则的字符串

(一个字符 代表一种规则 用来约束其他字符)

常用规则:

​ . 任何字符(与行结束符可能匹配也可能不匹配)

​ \d 数字:[0-9]

​ \D 非数字: [ ^0-9 ]

​ \s 空白字符:[ \t\n\x0B\f\r]

​ \S 非空白字符:[ ^\s ]

​ \w 单词字符:[a-zA-Z_0-9]

​ \W 非单词字符:[ ^\w ]

​ X? X, 0次或1次

​ X* X,零次或多次

​ X+ X,一次或多次

​ X{n} X,恰好 n 次

​ X{n,} X,至少 n 次

​ X{n,m} X,至少 n 次,但是不超过 m 次

​ [abc] a、b 或 c(简单类)

​ \b 单词边界

​ \. 专一匹配

​ . 就一个点表示匹配任意字符

​ (x)代表x为一组

案例

手机号: ^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\d{8}$

邮箱: ^([a-z0-9A-Z]+[-|_|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$

身份证: 1\d{5}(18|19|([2]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

Matcher类 有两个方法

find : 判断是否可以找到字符串

Group: 去除割好的字符

其中Group不能离开find使用 必须哦按段是否有然后在取

栈: 压栈 进栈 入栈 出栈 弹栈 类似于子弹夹 先进后出

队列: 先进先出 漏斗模型

数组: 查询快(索引值) 增删慢(长度不可变)

链表: 查询慢(无索引) 增删快(有链表地址值(存的是下一个元素节点的地址))

二叉树: 二叉树特点 每个节点最多有两个子树

哈希表: 哈希值 哈希算法–散列算法 (类似数组和链表的结合)

第一个步骤:求每个元素的哈希码值,然后对哈希码值进行各种运算 得出一个索引值 然后将此数存放与此索处

第二个步骤:对索引值相同的数据进行处理 再散列 链表式链接

集合:

1.长度可变

2.只能存储引用类型

3.在不使用强制类型的时候,集合是可以存储任意引用类型的

数组:

1.长度不变

2.不但能存储基本类型,还能存储引用类型,但是数组内的类型必须保持一致

两者共同之处是: 都是作为数据的存储容器所在

集合的关系:

单列表集合:

​ Collection接口:

​ List接口:有序集合

​ ArrayList: 底层是数组

​ LinkedList: 底层是链表

​ Set接口:无序集合

​ HashSet: 底层是哈希表

​ TreeSet: 底层是二叉树

双列表集合:

​ Map接口: 这个是接口 双列表以键值对的形式出现

​ HashMap:底层是哈希表

​ TreeMap:底层是二叉树

数组的长度:length

字符串的长度:length()

集合的长度:size()

集合不是不可以存储基本类型 而是对基本类型进行自动装箱操作

collection 接口成员方法

​ boolean add(E e) 添加

​ boolean remove(Object o) 移除

​ void clear() 清空

​ boolean contains(Object o) 是否包含

​ boolean isEmpty() 是否为空

​ int size() 集合的长度

集合之间的操作

boolean addAll(Collection c) 添加所有

boolean removeAll(Collection c) 移除所有(凡是参数中包含的内容都会被移除掉)

boolean containsAll(Collection c) 是否全部包含

boolean retainAll(Collection c) 取交集

创建一个集合 Collection cl =new ArrayList(); 接口的多态(向上转型)

Object[] toArray() 把集合转成数组,可以实现集合的遍历

Iterator iterator() 得到一个迭代器的对象(每次运行都在首位开始,没有指针)

集合遍历

	Iterator a = 集合.iterator(); while (a.hasNext()) { System.out.println(iterator.next()); 

泛型

Collection<Student> cl = new ArrayList<Student>(); 

可以直接使用student中的方法

list:有序的接口

1.有序: 这个有序并不是自动排序,而是按照你的存储顺序

2.允许重复元素

构造方法

​ void add(int index,E element) 插入

​ E remove(int index) 把指定索引的值移除掉

​ E get(int index) 索取指定索引对应的元素

​ E set(int index,E element) 替换

​ ListIterator listIterator() 获取ListIterator对象,用于迭代

​ 遍历(倒序)

​ boolean hasPrevious() previous返回前一个元素

list的四种遍历

public static void main(String[] args) { List<Integer> li = new ArrayList<Integer>(); li.add(3); li.add(2); li.add(2); li.add(5); li.add(1); li.add(3); li.add(2); // 数组打印 Object[] a = li.toArray(); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } System.out.println("++++++++++++++++++++++"); // 普通迭代器遍历 Iterator<Integer> iterator = li.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("++++++++++++++++++++++"); // 列表迭代器遍历 // 倒着遍历 ListIterator<Integer> li2 = li.listIterator(li.size()); while (li2.hasPrevious()) { System.out.println(li2.previous()); } System.out.println("++++++++++++++++++++++"); // 正着遍历 ListIterator<Integer> li3 = li.listIterator(); while (li3.hasNext()) { System.out.println(li3.next()); } System.out.println("++++++++++++++++++++++"); // for循环遍历 for (int i = 0; i < li.size(); i++) { System.out.println(li.get(i)); } } 

list去重

// 去除集合中字符串的重复值(字符串的内容相同) public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("大乔"); list.add("小乔"); list.add("二乔"); list.add("大乔"); list.add("二乔"); list.add("大乔"); list.add("大乔"); list.add("大乔"); list.add("小乔"); list.add("大乔"); //挨个对比删除 for (int i = 0; i < list.size(); i++) { for (int j = i+1; j <list.size(); j++) { if(list.get(i)==list.get(j)) { list.remove(j); j--; } } } System.out.println(list); //把不相同的储存到另一个集合 List<String> list2 = new ArrayList<String>(); for (int i = 0; i < list.size(); i++) { if(!list2.contains(list.get(i))) { list2.add(list.get(i)); } } System.out.println(list2); } 

  1. 1-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值