集合

集合框架

一、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第十四天,集合、迭代器的使用的更多相关文章

  1. “全栈2019”Java第九十四章:局部内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. “全栈2019”Java第十四章:二进制、八进制、十六进制

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. java基础(十四)集合(一)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  5. Java系列学习(十四)-集合

    1.java中的集合学习 2.Collection中常用方法 1.添加功能 boolean add(E e):添加一个元素 boolean addAll(Collection<? extends ...

  6. 学JAVA第二十四天,Set集合与StringBuilder

    下面的内容需要慢慢看,因为,我的语言表达能力不是很好 首先说Set把,Set集合是一个无序且不允许重复的集合,而且查找效率也是快的可怕的. 但是,有些时候,我们必须要用储存多个相同的值时,Set也是可 ...

  7. 复习java基础第四天(集合:List、Map、Collections、Enumeration)

    一.List: List 代表一个元素有序.且可重复的集合,集合中的每个元素都有其对应的顺序索引 List 允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 默认按元素的添加顺序设置 ...

  8. JAVA提高十四:HashSet深入分析

    前面我们介绍了HashMap,Hashtable,那么还有一个hash家族,那就是HashSet;在讲解HashSet前,大家先要知道的是HashSet是单值集合的接口,即是Collection下面的 ...

  9. JAVA基础第四章-集合框架Collection篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

随机推荐

  1. vscode 新版设置备份20200221 settings.json

    vscode 新版设置备份20200221 { "sync.gist": "9e6a5f7e8c52047b03c8732ff88aab0e", "s ...

  2. 手写 Promise 符合 Promise/A+规范

    异步编程是前端开发者必需的技能,过去管理异步的主要机制都是通过函数回调,然而会出现像“回调地狱”这样的问题.为了更好的管理回调,ES6 增加了一个新的特性 Promise.Promise 是 ES7 ...

  3. 聊聊OkHttp实现WebSocket细节,包括鉴权和长连接保活及其原理!

    一.序 OkHttp 应该算是 Android 中使用最广泛的网络库了,我们通常会利用它来实现 HTTP 请求,但是实际上它还可以支持 WebSocket,并且使用起来还非常的便捷. 那本文就来聊聊, ...

  4. asp.net core 3.x 微信小程序登录库(也可用于abp)

    视频教程(使用+实现原理):https://share.weiyun.com/57HKopT 建议直接看视频 源码地址:https://github.com/bxjg1987/abpGeneralMo ...

  5. JavaScript和JSCript的标准ECMAScript

    相信很多人都听过JavaScript(简称JS),甚至学过JavaScript.但是却没听过ECMAScript(简称:EC). ECMAScript其实是JavaScript的标准,也就是JavaS ...

  6. Log4j模板

    log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb #10个备份 log4j.appender.A1.MaxBackupIn ...

  7. 牛客练习赛60 A—F题解(缺E题)

    本蒟蒻这次只过了三题 赛后学习了一下出题人巨佬的标码(码风比我好多了 贴的代码有些是仿出题人)现在将自己的理解写下来与大家分享 A这个题一分析就是每个数字都会与所有数字&一下 (a&a ...

  8. VIM不正常退出产生的swp文件

    VIM不正常退出产生的swp文件 当你非正常关闭vim编辑器时(比如直接关闭终端或者电脑断电),会生成一个.swp文件,这个文件是一个临时交换文件,用来备份缓冲区中的内容. 第一次产生的交换文件名为“ ...

  9. ContOS7中使用Nginx进行TCP反向代理

    一.安装Nginx 1.下载:http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.16.1.tar.gz ...

  10. .NET 5 中的正则引擎性能改进(翻译)

    前言 System.Text.RegularExpressions 命名空间已经在 .NET 中使用了多年,一直追溯到 .NET Framework 1.1.它在 .NET 实施本身的数百个位置中使用 ...