栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java入门到精通——第二十单元 集合②

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java入门到精通——第二十单元 集合②

第二十单元 集合②

测试题今日重点学习目标迭代器-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的泛型中可以指定一个泛型的上限和下限。

泛型的上限:

格式: 类型名称 对象名称意义: 只能接收该类型及其子类

泛型的下限:

格式: 类型名称 对象名称意义: 只能接收该类型及其父类型

代码演示

public class Test03 {
    public static void main(String[] args) {
       Collection col=new ArrayList<>();
       col.add(1);
       Collection col1=new ArrayList<>();
       getElement1(col);
     //   getElement1(col1);//报错 只能接受该类及其子类
        getElement2(col);
        getElement2(col1);//只能接受该类型及其父类
    }
    //泛型的上限
    private static void getElement1(Collection col){

    }
    //泛型的下限
    private static void getElement2(Collection col){

    }
}
 
斗地主案例 

打扑克-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);
    }
}

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号