Java—增强for循环与for循环的区别/泛型通配符/LinkedList集合
增强for循环
增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。
它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
//格式:
for(元素的数据类型 变量 : Collection集合or数组){
} for (int n : arr) {//变量n代表被遍历到的数组元素
System.out.println(n);
}
增强for循环和普通的for循环有什么区别?
注意:新for循环必须有被遍历的目标。目标只能是Collection或者是数组。
建议:遍历数组时,如果仅为遍历,可以使用增强for如果要对数组的元素进行 操作,使用老式for循环可以通过角标操作。
泛型
定义格式:修饰符 class 类名<代表泛型的变量> { }
class ArrayList<E>{
public boolean add(E e){ }
public E get(int index){ }
}
使用格式:创建对象时,确定泛型的类型
例如,ArrayList<String> list = new ArrayList<String>();
//此时,变量E的值就是String类型
class ArrayList<String>{
public boolean add(String e){ }
public String get(int index){ }
}
泛型通配符:
泛型是在限定数据类型,当在集合或者其他地方使用到泛型后,那么这时一旦明确泛型的数据类型,
那么在使用的时候只能给其传递和数据类型匹配的类型,否则就会报错。
为了解决这个"无法确定具体集合中的元素类型"问题,java中,为我们提供了泛型的通配符<?>。
例如:
public static void printCollection(Collection<?> list) {
Iterator<?> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
泛型的限定:
限定泛型的上限:
格式:? extends E
? 代表接收E类型或者E的子类型的元素
例如,泛型限定为:? extends Person
则 ? 代表接收Person类型或者Person子类型的元素
限定泛型的下限:
格式:? super E
? 代表接收E类型或者E的父类型的元素
例如,泛型限定为:? super Student
则 ? 代表接收Student类型或者Student父类型的元素
LinkedList集合
LinkedList是List的子类,List中的方法LinkedList都是可以使用。
LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。
实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。
LinkedList<String> link = new LinkedList<String>();
//添加元素
link.addFirst("abc1");
link.addFirst("abc2");
link.addFirst("abc3");
//获取元素
System.out.println(link.getFirst());
System.out.println(link.getLast());
//删除元素
System.out.println(link.removeFirst());
System.out.println(link.removeLast()); while(!link.isEmpty()){ //判断集合是否为空
System.out.println(link.pop()); //弹出集合中的栈顶元素
}
最新文章
- 我的Android第五章:通过Intent实现活动与活动之间的交互
- asp.net中获得客户端的IP地址
- 黑马程序员——JAVA基础之Map集合
- canvas实现跟随鼠标旋转的箭头
- UVA 557 Burger 排列组合递推
- HDU 5437 Alisha’s Party (优先队列)——2015 ACM/ICPC Asia Regional Changchun Online
- asp.net 权限问题
- XML自己定义检查器语法+约束(1)
- django models的点查询/跨表查询/双下划线查询
- Objective-C 空指针和野指针
- Android--性能测试关注的指标
- 从零开始学安全(十一)●IP地址
- 在grails中远程调用action
- 涂抹mysql笔记-mysql字符集
- 利用H5本地存储localStorage、sessionStorage
- excel表格 xls、xlsx 读取
- MBR, EFI, 硬盘分区表
- Object.assign简单总结
- IT运维队伍的管理
- 如何解决zabbix snmp异常超时、不稳定、时通时断:Timeout
热门文章
- bzoj3732Network
- OGG19.1 oracle12c到oracle12c经典模式配置实施
- vue : 在vuex里写一个数组首尾元素互换的方法
- 在ASP.NET中,<;%= %>;和<;%# %>;有什么区别
- spring学习(五)详细介绍AOP
- element上传功能携带参数
- 修改了数据库文件可以识别是否最新,按数据库文件名20181217.db,日期名作文件名时间戳
- python处理excel文件(xls和xlsx)
- Android集成JPush(极光推送)
- Linux系统安装Samba共享服务器详解及安装配置