19 collection集合 & 迭代器 & 增强for循环

在这里插入图片描述

  • collection集合

java.util.collection接口
所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法
任意的单列集合都可以使用CoLLection接口中的方法
共性的方法:
	public boolean add(E e):把给定的对象添加到当前集合中,返回一个boolean值,一般都是true,可以不用接收
	public void clear():清空集合中所有的元素。不是删除集合
	public boolean remove(E e):把给定的对象在当前集合中删除。删除成功返回true,反之。
	public boolean contains(E e):判断当前集合中是否包含给定的对象。包含则返回true
	public boolean isEmpty():判断当前集合是否为空。空则返回true,反之。
	public int size():返回集合中元素的个数。
	public object[] toArray():把集合中的元素,存储到数组中。

创建集合对象,可以使用多态
Collection<String> coll = new ArrayList<>();
  • Iterator接口(迭代器,util包)对集合进行遍历

java.util.Iterator
两个常用方法:
	public boolean hasNext() : 如果仍有元素可以选代,则返回true。反之
	public E next() : 返回迭代的下一个元素
	
Iterator是一个接口,无法直接使用,需要用Iterator的实现类对象,获取方法比较特殊
Collection接口中有一个方法,叫iterator(),这个方法就是返回迭代器的实现类对象。
	Iterator<E> iterator() : 返回在此collection的元素上进行迭代的迭代器
	
选代器的使用步骤(重点):
	1.使用集合中的方法terator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
	2.使用Iterator接口中的方法hasNext判断还有没有下一个元素
	3.使用Iterator接口中的方法next取出集合中的下一个元素

Collection<String> coll = new ArrayList<>(); // 创建一个集合
coll.add("姚明");
Iterator<String> it = coll.iterator(); //创建一个迭代器,多态写法
while(it.hasNext()){
	System.out.println(it.next());	//迭代循环取出
}

迭代器实现原理
实现原理

  • 增强版for循环(简化迭代器)

增强for循环(也称for each循环)JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理
其实是个lterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

Collection<E> extends Iterable<E>:所有的单列集合都可以使用增强for循环
public interface Iterable<T> :实现这个接口允许对象成为“foreach”语句的目标

格式:
	for(集合/数组的数据类型 变量名 : 集合名/数组名){
		System.out.println(i);
	}
	for(int i : array){
		System.out.println(i);
	}
  • 斗地主案例

package cn.lczit.day13.demo03;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;

public class Demo05Test {
    public static void main(String[] args) {
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        ArrayList<String> poker = new ArrayList<>();
        poker.add("大王");
        poker.add("小王");
        for(String color:colors){
            for(String number:numbers){
                poker.add(color + number);  //添加组合牌进去扑克
            }
        }
        Collections.shuffle(poker); //把牌随机打乱

        //创建3个玩家集合和底牌集合
        ArrayList<String> player01 = new ArrayList<>();
        ArrayList<String> player02 = new ArrayList<>();
        ArrayList<String> player03 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();

        //i=1
        for(int i = 0;i < poker.size(); i++){
            //获取牌
            String p = poker.get(i);
            if (i >= 51){
                //给底牌发牌
                dipai.add(p);
            }else if (i % 3 == 0){
                //给玩家1发牌
                player01.add(p);
            }else if (i % 3 == 1){
                //给玩家2发牌
                player02.add(p);
            }else if (i % 3 == 2){
                //给玩家3发牌
                player03.add(p);
            }
        }

        //看牌
        System.out.println("刘德华:" + player01);
        System.out.println("周润发:" + player02);
        System.out.println("周星驰:" + player03);
        System.out.println("底牌:" + dipai);

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值