集合框架

五迷三道 提交于 2020-03-09 15:04:16

intro

在python中,我们经常遇到这样的语言

for element in Iterator
	# do some magic 

哇,一个in就能变量一个数据结构,再也不用构建一个下标i进行寻址操作了。其背后是就是神奇的迭代器作用了。

ArrayList类

有的同学可能认为数组就是最基本的容器了,no!数据有很多局限性,比如数组的大小是限定的,无法动态增大或缩小。
最基本的容器应该是ArrayList。

package coollection
import java.util.ArrayList;
import charactor.Hero;
public class TestCollection{
	@supperssWarning("rawtypes") {
		ArrayList heros = new ArrayList();
		heros.add(new Hero("Galen"));
		System.out.println(heros.size());
	
		heros.add(new Hero("Timo"));
		System.out.println(hero.size());
	}

}

当然ArrayList还有其他函数,用于操作数据。不多赘婿。

List接口

ArrayList类实现饿了List接口。
在这里插入图片描述
可见List接口提供了大量成员函数。

ArrayList

保证了ArrayList的element类型都是T。

List<Hero> genericHeros = new ArrayList<Hero>();
// JDK7
List<Hero> genericHeros = new ArrayList<>();

注意第二种写法只是语法糖,不改变编译过程。

Exercise

借助泛型和前面学习的面向对象的知识,设计一个ArrayList,使得这个ArrayList里,又可以放Hero,又可以放Item,但是除了这两种对象,其他的对象都不能放

首先创建一个接口 LOL,不需要在其中声明任何方法
接着让Hero和Item都实现LOL接口
最后,声明一个ArrayList的变量lolList,它的泛型是

List<LOL> lolList = new ArrayList<>();

这样在lolList中就即放Hero对象,又放Item对象了。
很巧妙,List存放父类,从而储存多种子类。


Reference

[1] https://how2j.cn/k/collection/collection-arraylist-list/686.html
[2] https://www.jianshu.com/p/b2ee70e40d2e

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!