测试题今日重点学习目标迭代器-Iterator
1.1 概述1.2 方法1.3 代码演示1.4 迭代器原理 增强for-遍历集合泛型
1.1 泛型的高级使用 斗地主案例
测试题1、判断键盘录入的字符串是否对称,并在控制台打印输出结果。【考核知识点:StringBuilder类的方法】
public class Test03 {
public static void main(String[] args) {
//第一步键盘录入
System.out.println("请输入字符串 例如abccba");
String str = new Scanner(System.in).nextLine();
//第二步:创建Stringbuilder对象
StringBuilder sb=new StringBuilder(str);
//第三步:字符串反转
StringBuilder str2 = sb.reverse();
//把可变的字符串变成不可变的 调用toString();
String str3 = str2.toString();
String s=(str.equals(str3))?"对称":"不对称";//利用三元运算符
System.out.println(s);
}
}
2、 计算小票信息上的总价。【考核知识点:字符串的解析和引用类型转换】
小票信息已给出 :
String message= "大拉皮-21.90;鱼香肉丝-22.80;巫山烤鱼-58.80”;
public class Test04 {
public static void main(String[] args) {
String message= "大拉皮-21.90;鱼香肉丝-22.80;巫山烤鱼-58.80";
//第一步:把字符串中的数字提取出来 split();
String[] arr = message.split("[-;]");
//遍历字符串数字
double sum=0;
for(int i=1;i
今日重点学习目标
迭代器–Iterator–对集合进行遍历增强For–变量名.iter泛型斗地主-案例
迭代器-Iterator
1.1 概述
对 collection 进行迭代的迭代器,也就是Collection下面的所有实现类都可以使用Iterator进行遍历。
1.2 方法
public boolean hasNext(); 如果仍有元素可以迭代,则返回 true。 判断集合中是否有元素,如果有继续遍历。
public E next():返回迭代的下一个元素。 获取集合中元素
public void remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 基本上很少用
1.3 代码演示
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class DemoIterator01 {
public static void main(String[] args) {
//第一步:创建集合
Collection col=new ArrayList<>();//多态形式
//第二步:集合中添加元素
col.add("aaa");
col.add("bbb");
col.add("ccc");
col.add("ddd");
//第三步:使用迭代器Iterator进行对集合遍历
//备注:如果想使用Iterator必须得到Iterator对象之后 就可以使用hasNext();next():
Iterator it = col.iterator();
//使用hasNext();next():
while(it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
}
1.4 迭代器原理
1、集合中的remove()方法与迭代器中的remove()的使用
迭代器中的remove()在获取元素之后才能使用该方法
集合的remove()在遍历之前或者遍历中都可以使用该方法
2、在迭代器遍历中使用集合中的remove()方法
不行的。会导致并发修改异常
增强for-遍历集合
格式 -jdk5的新特性
for(元素的数据类型 变量名:集合or数组变量名){
//循环体
}
快捷键 变量名.iter 然后enter
代码演示
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
//增强for遍历
for (String s : list) {
System.out.println(s);
}
}
}
JDK5的新特性
装箱和拆箱、增强for、枚举、反射
泛型
public class Test01 {
public static void main(String[] args) {
ArrayList col=new ArrayList();
col.add(1);
col.add("a");
col.add('b');
//遍历
for(int i=0;i
运行结果
为了解决类型转换异常—泛型
类的后面定义泛型
格式:<数据类型>
例如 ArrayList list=new ArrayList<>();
笔试题:泛型的好处
1、把运行期的异常提前到编译期。
2、防止类型转换异常
接口 类 方法 都可以定义泛型
public static void add(){
}
1.1 泛型的高级使用
通配符高级使用----受限泛型
之前设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA的泛型中可以指定一个泛型的上限和下限。
泛型的上限:
格式: 类型名称 extends 类 > 对象名称意义: 只能接收该类型及其子类
泛型的下限:
格式: 类型名称 super 类 > 对象名称意义: 只能接收该类型及其父类型
代码演示
public class Test03 {
public static void main(String[] args) {
Collection col=new ArrayList<>();
col.add(1);
Collection
斗地主案例
打扑克-54张牌
public class DoudiZhu {
public static void main(String[] args) {
//创建54张扑克牌的集合
ArrayList pokerbox=new ArrayList<>();
//创建花色的集合
ArrayList colors=new ArrayList<>();
//创建数字的集合
ArrayList numbers=new ArrayList<>();
//往花色集合中添加元素
colors.add("♠");
colors.add("♥");
colors.add("♦");
colors.add("♣");
//往数字集合中添加元素
for(int i=2;i<=10;i++){
numbers.add(i+"");
}
numbers.add("A");
numbers.add("J");
numbers.add("Q");
numbers.add("K");
//进行拼接
for (String color : colors) {
for (String number : numbers) {
pokerbox.add(color+number);
}
}
//大小王
pokerbox.add("大王");
pokerbox.add("小王");
//进行洗牌
Collections.shuffle(pokerbox);
//进行发牌-- 对3个玩家进行发牌 留3张底牌
ArrayList play1=new ArrayList<>();//17张牌
ArrayList play2=new ArrayList<>();//17张牌
ArrayList play3=new ArrayList<>();//17张牌 n/3 0 1 2
ArrayList dipai=new ArrayList<>();//3张
for(int i=0;i=51){
dipai.add(card);
}else if(i%3==0){
play1.add(card);
}else if(i%3==1){
play2.add(card);
}else{
play3.add(card);
}
}
System.out.println("玩家1"+play1);
System.out.println("玩家2"+play2);
System.out.println("玩家3"+play3);
System.out.println("底牌"+dipai);
}
}



