第五天 Collection和泛型

集合

集合和数组的区别

  • 集合:长度可变,只能存引用类型数据

  • 数组:长度固定,可以存基本类型数据,也可以存引用类型数据

集合的体系

  • 注意:有序和无序指的是存进去的顺序和取出来的顺序是否一致

在这里插入图片描述

集合方法:

  • add(Object obj) 添加
  • clear() 清空集合中的所有元素
  • remove(Object obj) 删除指定元素
  • contains(Object obj) 判断集合中是否包含obj对象,如果包含,返回true,否则返回false
  • isEmpty() 判断集合中是否有数据,如果有返回false,否则返回true
  • size() 获取集合中存储数据的个数
  • toArray(T[] arr);把集合转换成指定类型的数组,集合中存什么类型就传入什么类型数组

迭代器

  • 概念:集合统一取出数据的方式。这个类我们把他称之为Iterator
  • 迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
  • 注意事项:在迭代的过程中不要修改集合中的数据,否则可能会报并发修改错误ConcurrentModificationException
  • foreach
    格式
    for(数据类型 变量名 : 集合或者数组){
    }	
    

泛型

什么时候用泛型

  • 如果不确定使用什么类型的数据就使用泛型;
  • 从概念上讲就是一个预定义数据类型

泛型的好处

  • 将运行时期异常提前到编译时期,省去了强制类型转换的麻烦

泛型的使用

  • 类:在类的声明后面加<泛型名1,泛型的名2,…>
  • 方法:在方法上声明泛型必须声明在返回值类型前面,因为返回值类型也有可能用到这个泛型
  • 和类上定义泛型一模一样
  • 注意事项:一般情况泛型名都大写,并且是一个字母,字母的缩写一般是属性名的首字母
    在这里插入图片描述

泛型通配符

  • :不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。此时只能接受数据,不能往该集合中存储数据
public static void main(String[] args) {
	Collection<Intger> list1 = new ArrayList<Integer>();
	getElement(list1);
	Collection<String> list2 = new ArrayList<String>();
	getElement(list2);
}
public static void getElement(Collection<?> coll){//?代表可以接收任意类型
}
  • 泛型的上限:
    格式: 类型名称 <? extends 类 > 对象名称
    意义: 只能接收该类型及其子类
  • 泛型的下限:
    格式: 类型名称 <? super 类 > 对象名称
    意义: 只能接收该类型及其父类型

个人总结

4.19上午
Coll.toArray() 返回的是Object类型的数组,所以不常用
Coll.toArray(new T[0]),返回的是T类型的数组
迭代的时候不要修改集合中的数据
foreach 也可以遍历数组
实现了Interable接口的集合都可以使用foreach;
Foreach 不能使用索引查找指定位置的元素
4.19 下午
泛型:一般用属性的第一个字母的大写表示,多个泛型用逗号分隔
泛型声明在方法上,要放在返回值类型的前面只能在方法中使用
修饰符 <泛型> 返回值类型(泛型 变量)
泛型通配符只能用在方法参数里 <?>
泛型没有继承关系
泛型:左边限定右边

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值