第十四天

泛型

1.泛型怎么来的? 想要模仿数组数据类型检查

2.数组好处:在编译时期就检查数据的类型,如果不是要求的类型编译器就报错

3.引入泛型的目的是想通过泛型来约束集合中元素的类型

4.泛型的好处:可以把报错的时机提前,在编译器就报错,而不是运行后才抛出异常
在向集合中添加元素时,会先检查元素的数据类型,不是要求的类型就编译失败

5.–type的值应该如何写
需要查看要存放的数据类型是什么,依据类型来定义
但是type必须是引用类型,不能是基本类型

泛型优点

泛型可以实现通用代码的编写,使用E表示元素的类型是Element类型
泛型的语法要求:如果在方法上使用泛型,必须两处同时出现
一个是传入的参数的类型,另一个是方法声明上返回值类型之前的泛型

高效for循环 foreach循环
* 前提:如果只是单纯的从头到尾遍历数组,就可以使用高效for循环
* 好处,比普通的for循环写法简单,而且效率更高
* 坏处,没有办法按照下标来操作值,只能从头到尾依次遍历
* 语法:for (1 2:3) {代码块}
* 3是要便利的数组 1是遍历后得到的数据类型 2是遍历后得到的数据的名字

泛型可以在接口 类 方法上使用

Collection

在这里插入图片描述
由于List接口与Set接口都继承了Collection接口,因此这些方法对于List集合和Set集合是通用的

List

元素都有下标
数据是有序的
允许存放重复的元素

集合的迭代方式
    * 1.for循环
    * 2.增强for循环、高效for循环、foreach循环
    * 3.iterator迭代器循环
    * 4.listIterator

方式一

//方式一:因为List集合是有序的,元素有下标,所以可以根据下标进行遍历
		//从何开始:0 到哪结束:list.size() 如何变化:i++
		for(int i = 0 ; i< list.size() ; i++) {
			//根据对应的下标来获取集合对应位置上的元素
			String s = list.get(i);
			System.out.println(s);
		}

方式二

//方式二:普通for循环遍历效率低,可以通过foreach提高遍历效率
		//好处:语法简洁效率高 坏处:不能按照下标来处理数据
		//格式:for(1 2 : 3){循环体} 3是要遍历的数据 1和2是遍历得到的单个数据的类型 和 名字
		for(String s : list) {//s就是本次循环/遍历得到的集合中的元素
			System.out.println(s);
		}

方式三

//方式三:iterator() 是继承自父接口Collection的
		/**1.获取当前集合的迭代器*/
		Iterator<String> it = list.iterator();
		/**由于不清楚要遍历的集合中有多少元素,所以我们使用的循环结构是While*/
		while(it.hasNext()) {//判断集合中是否有下个元素,如果有,返回true,继续遍历
			String s = it.next();//获取对应的元素
			System.out.println(s);
		}

方式四

//方式四:listIterator()是List接口特有的
		//Iterator<E> Iterator --父接口 --hasNext() --next() --remove()
		//ListIterator<E> ListIterator --子接口,拥有父接口的方法,也有自己特有的方法(逆向迭代)
		//public interface ListIterator<E> extends Iterator<E>
		ListIterator<String> it2 = list.listIterator();
		while(it2.hasNext()) {//判断是否还有数据
			String s = it2.next();//获取当前遍历得到的数据
			System.out.println(s);
		}

ArrayList

存在java.util包中
内部是用数组结构存放数据,封装数组的操作,每个对象都有下标
内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长
查询快,增删数据效率会低

LinkedList

ArrayList底层是数组结构,查询快,增删慢,适合查询较多的场景
LinkedList底层是链表结构,查询慢,增删快,适合增删操作较多的场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值