Java第十四天,集合、迭代器的使用
集合
集合框架
一、Collection
1.定义方法:
Collection<E> obj = new Collection子类<>();
因为Collection是一个抽象类,所以不可以直接new Collection对象。
2.方法:
3.注意:
(1).Collection接口上又成就了两个接口list和set,list接口允许添加重复内容,永远返回true,set接口不允许添加重复内容,有可能返回false。
(2)因为所有的集合都实现了Collection接口,所以Collection的方法,其他集合都可以正常使用
二、迭代器
(1)迭代器的作用。
因为在很多情况下,需要完成对集合的遍历,这种情况下如果使用普通的for语句,将不能够实现这个目的,因为实现set接口的集合类是不存在索引且不允许重复的,这种情况下是无法使用普通的for语句遍历的。针对这个特殊的情况,迭代器产生了。
(2)迭代器工作原理。
实现Collection接口的所有集合获取元素的通用方式是——判断该集合是否存在下一个元素,如果有则访问下一个;如果没有,则遍历完成。
(3)Iterator<E>
Iterator<E>就是一个迭代器。
迭代器也是有泛型的(Iterator<E> 中的 E),集合是什么泛型,集合返回的迭代器就是什么泛型。
它有如下几个方法:
其中 hasNext() 方法负责检测集合是否遍历完成,next() 方法用于指向下一个元素,remove 方法负责移除指定元素。
(4)如何获取迭代器?
因为 Iterator<E> 是一个接口,所以不能直接New对象,而需要实现类对象。
Collector有一个方法 iterator() 方法,可以返回一个迭代器的实现对象。
(5)迭代器如何使用?
①从集合获取迭代器实现类对象。
②使用hasNext()方法判断是否还存在元素。
③遍历元素。
Iterator<E> iterator = 集合.iterator();
while(iterator.hasNext()){
......
}
(6)代码:
Stu类:
package com.lanyue.day11;
public class Stu {
public int age;
public String name;
public Stu(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
运行代码:
package com.lanyue.day11;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionLearn {
public static void main(String[] args) {
Collection<Stu> stus = new ArrayList<Stu>();
stus.add(new Stu(20,"张三"));
stus.add(new Stu(32,"李四"));
stus.add(new Stu(23,"赵六"));
Iterator<Stu> iterator = stus.iterator();
while(iterator.hasNext()){
Stu stu = iterator.next();
System.out.println(stu.age + " " + stu.name);
}
}
}
三、增强for
jdk1.5以后,官方推出了增强版的for语句。专门用来遍历数组和集合。它的内部实现原理也是用迭代器实现的,只不过为了简化代码,采用for语句写法。
写法如下:
for(集合或数组 对象 :集合或数组){
//对 对象进行访问
}
注意:
增强for循环的目标操作数只能是数组或者集合。
Java第十四天,集合、迭代器的使用的更多相关文章
- “全栈2019”Java第九十四章:局部内部类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第十四章:二进制、八进制、十六进制
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- java基础(十四)集合(一)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- Java系列学习(十四)-集合
1.java中的集合学习 2.Collection中常用方法 1.添加功能 boolean add(E e):添加一个元素 boolean addAll(Collection<? extends ...
- 学JAVA第二十四天,Set集合与StringBuilder
下面的内容需要慢慢看,因为,我的语言表达能力不是很好 首先说Set把,Set集合是一个无序且不允许重复的集合,而且查找效率也是快的可怕的. 但是,有些时候,我们必须要用储存多个相同的值时,Set也是可 ...
- 复习java基础第四天(集合:List、Map、Collections、Enumeration)
一.List: List 代表一个元素有序.且可重复的集合,集合中的每个元素都有其对应的顺序索引 List 允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 默认按元素的添加顺序设置 ...
- JAVA提高十四:HashSet深入分析
前面我们介绍了HashMap,Hashtable,那么还有一个hash家族,那就是HashSet;在讲解HashSet前,大家先要知道的是HashSet是单值集合的接口,即是Collection下面的 ...
- JAVA基础第四章-集合框架Collection篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
随机推荐
- 树链剖分与倍增求LCA
树链剖分与倍增求\(LCA\) 首先我要吐槽机房的辣基供电情况,我之前写了一上午,马上就要完成的时候突然停电,然后\(GG\)成了送链剖分 其次,我没歧视\(tarjan LCA\) 1.倍增求\(L ...
- Python习题集(一)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! 题目 有一个数据list of dict如下 a = [ {"}, {"}, {"}, ] 写入到本 ...
- java-FileUtils(读取、判断、获取)-(新手)
实例: lx1: import org.apache.commons.io.*; import java.io.File; import java.io.IOException; public cla ...
- JAVA-迭代器\增强型for循环。(新手)
//导入的包.import java.lang.reflect.Array;import java.util.*;//创建的一个类.public class zylx1 { //公共静态的主方法. p ...
- js遍历删除对象的key
// 如果用户没有填写值,则删除对象的key. Object.keys(obj).forEach( (key) => { if (!obj[key]) { // !obj[key]表示 ...
- 关于PS切图
现在前端项目中碰到越来越多的图片处理问题,虽然找自己公司UI小哥哥小姐姐可以解决,但是每次都找不仅要看别人有没有时间,更得看人家脸色 唉,自己摸索着来吧(多图,流量党请注意切换WiFi): 通常切图的 ...
- 牛客练习赛60 A—F题解(缺E题)
本蒟蒻这次只过了三题 赛后学习了一下出题人巨佬的标码(码风比我好多了 贴的代码有些是仿出题人)现在将自己的理解写下来与大家分享 A这个题一分析就是每个数字都会与所有数字&一下 (a&a ...
- Apache Druid 底层存储设计(列存储与全文检索)
导读:首先你将通过这篇文章了解到 Apache Druid 底层的数据存储方式.其次将知道为什么 Apache Druid 兼具数据仓库,全文检索和时间序列的特点.最后将学习到一种优雅的底层数据文件结 ...
- Mybatis详解系列(一)--持久层框架解决了什么及如何使用Mybatis
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...