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<>();
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 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);
}
}