目录
1.Collection集合概述
Collection是单列集合的顶层接口,表示一组对象,这些对象也称为Collection的元素。JDK不提供子接口的任何实现,但提供更具体的子接口(如Set和List等)。
package Demo1;
import java.util.ArrayList;
import java.util.Collection;
/**
* @Description: Collection 集合的使用
*/
public class Test {
public static void main(String[] args) {
//多态的形式用父类接口的对象来存储子类接口的实现类对象的引用
Collection<String> c = new ArrayList<>();
c.add("黄固");
c.add("欧阳锋");
c.add("段智兴");
c.add("洪七公");
c.add("王重阳");
System.out.println(c);
}
}
2.Collection集合常用方法
Collection集合常用方法的方法名及说明如下表所示。
方法名 | 说明 |
boolean add(E e); | 添加元素 |
boolean remove(Object o); | 从集合中移除指定的元素 |
void clear(); | 清空集合中的元素 |
boolean contains(Object o); | 判断集合中是否存在指定的元素 |
boolean isEmpty(); | 判断集合是否为空 |
int size(); | 计算集合的长度,也就是集合中元素的个数 |
package Demo2;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
//多态的形式用父类接口的对象来存储子类接口的实现类对象的引用
Collection<String> c = new ArrayList<>();
c.add("黄固");
c.add("欧阳锋");
c.add("段智兴");
c.add("洪七公");
c.add("王重阳");
//c.add(2,"白眉大侠");
System.out.println(c.remove("王重阳")); //删除成功返回true
//System.out.println(c.remove("王重阳")); //删除失败返回false
c.clear(); // 清空集合 慎用
System.out.println(c.isEmpty()); //集合为空返回true
System.out.println(c.contains("洪七公")); //存在返回true
//System.out.println(c.contains("洪六公")); //不存在返回false
System.out.println(c.size()); //返回集合中元素的个数
System.out.println(c);
}
}
ArrayList实现双色球机选:
package Demo3;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/**
* TODO 福彩双色球的机选号码生成器
* 投注规则 6个1-33的红球 + 1个1-16的蓝球组成的一组号码
*/
public class Test3 {
public static void main(String[] args) {
//获取随机值的生成对象
Random ran = new Random();
//0 - 15之间的值 + 1 得到的就是 1 - 16
int blueBall = ran.nextInt(16) + 1;
ArrayList<Integer> redBalls = new ArrayList<>();
//生成红球
int count = 0;
while(redBalls.size() < 6) {
count++;
int rb = ran.nextInt(33) + 1;
if(!redBalls.contains(rb)) {
redBalls.add(rb);
}
}
//排序
Collections.sort(redBalls);
//输出结果
System.out.println("红球:" + redBalls + " | 蓝球:[" + blueBall + "]");
System.out.println("========================");
System.out.println("一共生成了" + count + "次红球号码");
}
}
数组实现双色球机选:
package Demo4;
import java.util.Arrays;
import java.util.Random;
/**
* TODO 福彩双色球的机选号码生成器
* 投注规则 6个1-33的红球 + 1个1-16的蓝球组成的一组号码
*/
public class Test4 {
public static void main(String[] args) {
//获取随机值的生成对象
Random ran = new Random();
//0 - 15之间的值 + 1 得到的就是 1 - 16
int blueBall = ran.nextInt(16) + 1;
int[] redBalls = new int[6];
int count = 0;
for (int i = 0, j; i < 6; i++) {
count++;
int rb = ran.nextInt(33) + 1;
for (j = 0; j < i; j++) {
if(rb == redBalls[j]) {
i--; //因为外循环当中有i++,这里i--相当于找到相同的元素之后下标没有后移
break;
}
}//去重的动作
if(!(j < i)) {
redBalls[i] = rb;
}
}
//冒泡排序
for (int i = 0; i < redBalls.length - 1; i++) {
for (int j = 0; j < redBalls.length - 1 - i; j++) {
if(redBalls[j] > redBalls[j+1]) {
redBalls[j] ^= redBalls[j+1];
redBalls[j+1] ^= redBalls[j];
redBalls[j] ^= redBalls[j+1];
}
}
}
//输出结果
System.out.println("红球:" + Arrays.toString(redBalls) + " | 蓝球:[" + blueBall + "]");
System.out.println("========================");
System.out.println("一共生成了" + count + "次红球号码");
}
}
3.Collection集合的遍历
a.Collection集合的常用遍历方式是使用Iterator迭代器,这也是集合的专用遍历方式。
b.Iterator<E> iterator():返回集合中元素的迭代器,通过集合的iterator()方法得到。
c.迭代器是通过集合的iterator()方法得到的,所以它是依赖于集合而存在的。
Iterator中常用方法的方法名及说明如下表所示。
方法名 | 说明 |
E next(); | 返回迭代器中的下一个元素 |
boolean hasNext(); | 如果有迭代且后面具有更多元素则返回true |
package Demo5;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test5 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("fengbing ");
c.add("fzy ");
c.add("why ");
for (String name : c) {
System.out.println(name);
}//使用增强for循环遍历集合的时候,底层调用的就是迭代器
System.out.println("===============================");
Iterator<String> it = c.iterator();
while(it.hasNext()) { //判断当前迭代器中有没有下一个元素
System.out.println(it.next());
}
}
}