java API03 (集合、范型、迭代器、下载中有模拟斗地主发牌代码)

复习
String
特点:
final修饰的类 - 不能继承
fianl byte[]

创建方式:
	1.直接赋值
		String str = ""; -> 常量池
	2.构造方法创建
		new String()

常用方法:
	toCharArray() 转换为一个新的字符数组
	CharAt()  返回指定索引处的char值
	trim()  返回字符串副本,忽略前导空白和尾部空白
	subString() 返回一个新的字符串,是此字符串的一个子字符串
	split() -> 数组  根据给定正则表达式匹配拆分字符
	Valueof() 返回类型参数的字符串表达式

编码问题:
	字符 -> 字节:编码
		str.getByte() --> utf-8
		str.getByte("gbk")

	字节 -> 字符:解码
		new String(byte[])

正则表达式:
[]:一个中括号表示一个字符
开头和结尾: ^ $

? -> 0或1
* -> 0或多
+ -> 1或多
{n} -> 恰好n次
{n,} -> 至少n次
{n,m} -> 最少n次,最多m次

API:
	matches() 匹配
	replaceAll() 替换全部
	split() 分割

StringBuilder 和 StringBuffer
多用builder
append()
insert()
delete()
reverse()

包装类 - Integer -> Number
常量池: 有范围 -> 一个byte字节的范围 -128~127

装箱: int -> Integer

拆箱:Integer -> int

Integer 和 String的转换
String -> Integer

String -> int

存储大量的数据 -> 数组 -> 一旦创建就不可变
int[] arr = new int[10];
数组的扩容/缩容

可变长数组 -> 集合(各种各样的类) - 数据结构

集合:
1.概念
集合相当于是个容器,主要负责存储任意数量的数据
2.分类
Collection(接口) - 有很多子接口/实现类
| - List(I)
| - Set(I)
| - Queue(I)
Map(接口)

Collection接口
1.创建 -> 是一个接口 不能new自己,只能new接口的实现类
2.常用API
1)普通常用
add() - 添加
remove() -删除
clear() - 清空
isEmpty() - 询问是否为空
contains() - 询问是否包含
size() - 获得集合的长度

	2)集合与集合之间的方法 c1 和 c2两个集合
		addAll() - 将c2中所有的元素添加到c1中
		removeAll() - 将c2中出现过的元素从c1中删除
		containsAll() - 问c2中是否包含c1中的所有元素

	3)集合与数组之间的方法
		集合 -> 数组
			toArray() - 得到的返回值永远只能是Object类型
			toArray(T<> []) - T表示数组需要的类型,并且跟数组的长度无关

		数组 -> 集合
			Arrays.asList()
				得到的是一个集合,但是使用上得到ArrayList是一个Array类中的内部类
				所以不能使用让给长度会修改的方法
					例如: add()

3.注意:
	collection没有get(),想要获取元素,必须使用Iterator迭代器获取

	使用迭代器的前提:
		这个接口必须是可迭代的.

Iterable接口 - 是一个超级接口
1.此接口中只要一个方法 - iterator
2.iterator 的返回值类型是 Iterator也是一个接口
Iterator接口中有三个方法:
next() - 移动到下一个
hashNext() - 询问有没有下一个
remove() - 删除元素

	注意:如果迭代删除每一个元素,必须使用迭代器中的remove().否则会出现异常

	异常:ConcurrentModificationException - 并发修改异常
	解决: 不能调用集合中的remove()
		  只能使用迭代器中自己的remove()
		  remove() 删除的是迭代器中游标所在位置上的元素

在这里插入图片描述

3.forEach - 简易版迭代器
	1)作用: 获得数组/集合中所有的元素
	2)结构:
		for(对象 : 集合){}
		:前 -> 每取出来的一个对象
				相当于迭代器中的 it.next()
		:后 -> 要遍历的集合

	3)缺点:
		使用简易版迭代器,不能删除元素

弱类型 -> 支持所有类
泛型
1.特点:
a.规定了泛型,就只支持定义好的类型参数,只是在编译时有效,只是用来规范程序员写法的.
b.运行时状态下,是支持所有类型,支持Object
c.将类型作为参数使用,也就是说泛型可以放在所有存放类型的地方(方法参数/返回值类型/类)

2.使用泛型的步骤:
	1.在类中定义泛型的类型
		在类名后添加 <E> - 字母随意
	2.在类中的方法中,具体类型就可以使用E来代替

3.泛型的作用:
	为了优化方法的重载

复习JavaBean规范:实体类的书写规范
1.所有成员变量私有化,并且提供一对get()/set()
2.定义无参构造方法
3.重写toString()
4.重写equals() 和 hashCode()
5.所有基本数据类型建议使用包装类

数据结构 -> 数据和数据之间的关系

顺序结构
链表结构

相关代码下载:
https://github.com/xjq860955921/CSDN/tree/master/teacher/src/api03

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值