集合框架

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存放父类,从而储存多种子类。

遍历

对ArrayList而言,用size()和get()能分别得到容器大小的元素的值,结合for循环就可以遍历整个容器

packgae collection;
import java.util.ArrayLsit;
import java.util.Iterator;
import java.util.List;

import charactor.Hero;

public class TestCollection{
	public static void main(String[] args) {
		List<Hero> heros = new ArrayList<Hero>();

		for(int i = 0; i < heros.size(); i++) {
			heros.add(new Hero("i"));
		}
		for(int i = 0; i < heros.size(); i++) {
			Hero h = heros.get(i);
			System.out.pritln(h);
		}
	}

}

这样写不是不是很笨呢?我们有:,类似于python的in

packgae collection;
import java.util.ArrayLsit;
import java.util.Iterator;
import java.util.List;

import charactor.Hero;

public class TestCollection{
	public static void main(String[] args) {
		List<Hero> heros = new ArrayList<Hero>();

		for(int i = 0; i < heros.size(); i++) {
			heros.add(new Hero("i"));
		}
		for(Hero h : heros) {
			System.out.println(h);
		}
	}

}

棒!和python一模一样!


Reference

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值