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
来源:CSDN
作者:George1998
链接:https://blog.csdn.net/weixin_40833196/article/details/104741485