java泛型扑克_day13【Collection、泛型】

扩展: equals()方法的源代码// 主方法

Person p1 = new Person("张三", 23);

Person p2 = new Person("李四", 24);

boolean b = p1.equals(p2);

// =====================================================================

@Override

public boolean equals(Object o) { // Object o = new Person("李四", 24);

// this: p1

// o : p2

// 比较地址值是否相同

// 如果地址值相同, 直接返回true

if (this == o) {

return true;

}

// equals方法能够调用成功说明p1一定不为null

// 如果p2为null, 直接返回false

if (o == null) {

return false;

}

// getClass() : 获取字节码文件对象, 一个类的字节码文件对象是唯一的

// 如果p1和p2的字节码文件对象不同(不是同一个类的对象), 直接返回false

if (this.getClass() != o.getClass()) {

return false;

}

// 多态的弊端: 父类引用不能直接使用子类特有的属性和行为

// 向下转型

Person person = (Person) o;

return this.age == person.age &&

Objects.equals(this.name, person.name);

}

一. Collection集合(重点)

1. 单列集合的继承体系

[外链图片转存失败(img-jUZXnTSK-1564728938424)(assets/1564645350899.png)]

2. Collection中的常用功能addpublic boolean add(E e) : 把给定的对象添加到当前集合中。removepublic boolean remove(E e) : 把给定的对象在当前集合中删除。clearpublic void clear() :清空集合中所有的元素。isEmptypublic boolean isEmpty() : 判断当前集合是否为空(长度为0)。containspublic boolean contains(E e) : 判断当前集合中是否包含给定的对象。sizepublic int size() : 获取集合的长度(集合中元素的个数)

二. 迭代器迭代器: 用来遍历集合

1. 迭代器的使用iteratorIterator iterator(): 获取集合对应的迭代器对象迭代器Iterator中的功能boolean hasNext(): 判断是否有下一个元素E next() : 获取下一个元素nexthasNext

2. 遍历集合Collection c = new ArrayList<>();

c.add("C罗");

c.add("梅西");

c.add("武磊");

// 1. 获取集合对应的迭代器

Iterator it = c.iterator();

// 2. 判断是否有下一个元素

while (it.hasNext()) {

// 3. 获取下一个元素

System.out.println(it.next());

}自定义对象// 创建集合

Collection c = new ArrayList<>();

// 匿名对象

c.add(new Person("张三", 23));

c.add(new Person("李四", 24));

c.add(new Person("王五", 25));

c.add(new Person("赵六", 26));

// c.add(new Person("周琦", 27));

// 一个hashNext(), 就对应一个next()

// 遍历

// 1. 获取集合对应的迭代器对象

Iterator it = c.iterator();

// 2. 判断是否有下一个元素

while (it.hasNext()) {

// 3. 获取下一个元素

Person p = it.next();

System.out.println(p.getName() "---" p.getAge());

}

3. 增强for(重点)用来遍历容器, 底层是迭代器// 格式

for (容器中元素的数据类型 变量名 : 容器) {

使用变量;

}

// 快捷键

容器.for -> enter

三. 泛型(了解)

泛型这一部分, 要求大家掌握的: 能够使用泛型定义集合.ArrayList list = new ArrayList<>();

1. 了解泛型的好处将问题从运行时期, 提前到编译时期.

省去了强转的麻烦

2. 了解泛型类, 方法, 接口泛型类泛型类在创建对象时, 确定泛型的具体数据类型

泛型方法泛型方法在方法的调用时, 确定泛型的具体数据类型

泛型接口类实现泛型接口时, 直接确定泛型的具体数据类型

类实现泛型接口时, 不确定具体类型, 等到创建该类对象的时候, 再确定泛型的具体数据类型

扩展泛型方法的面试题需求: 创建用来打印集合的方法(可以打印所有数据类型的集合)

3. 了解泛型的边界

泛型的通配符? : 代表所有类型

泛型的边界固定泛型的上边界 extends E> : 传入的泛型可以是E, 也可以是E的子类

固定泛型的下边界 super E> : 传入的泛型可以是E, 也可以是E的父类

四. 斗地主public class Demo {

public static void main(String[] args) {

// 买牌

// 创建容器, 用来当做扑克盒(存放每一张牌)

ArrayList list = new ArrayList<>();

// 创建花色数组

String[] colors = {"♥", "♠", "♣", "♦"};

// 创建点数数组

String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

// 先遍历花色数组

for (String color : colors) {

// 再遍历点数

for (String number : numbers) {

// 拼接获取一张牌

String poker = color number;

// 将这张牌, 添加到集合中

list.add(poker);

}

}

// 添加大小王

list.add("♙");

list.add("♛");

// 洗牌

Collections.shuffle(list);

// 发牌

// 创建4个容器, 代表3个人和1个底牌

ArrayList me = new ArrayList<>();

ArrayList gaoOO = new ArrayList<>();

ArrayList zhuYin = new ArrayList<>();

ArrayList left = new ArrayList<>();

// 遍历集合, 使用普通for循环

for (int i = 0; i < list.size(); i ) {

// i就是索引

// 如果是最后3张牌, 发给底牌

if (i >= list.size() - 3) {

// 添加的是i索引对应的元素

left.add(list.get(i));

}else if (i % 3 == 0) {

me.add(list.get(i));

}else if (i % 3 == 1) {

gaoOO.add(list.get(i));

}else {

zhuYin.add(list.get(i));

}

}

// 看牌

System.out.println("底牌: " left);

System.out.println("我: " me);

System.out.println("圆圆: " gaoOO);

System.out.println("紫霞: " zhuYin);

}

}创建集合, 集合中的元素是 [“C”, “Kotlin”, “Python”, “Java”, “Java”,“C ”, “C#”]

删除"Java"

比较的时候使用equals()

遍历的时候, 普通for循环, 迭代器, 增强for循环来源:https://www.icode9.com/content-4-374651.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值