zoukankan      html  css  js  c++  java
  • 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循环的目标操作数只能是数组或者集合。

  • 相关阅读:
    CString与char *互转总结
    string 与char* char[]之间的转换
    VC++下使用SQLite数据库
    VC连接数据库方式
    C/C++中判断某一文件或目录是否存在
    漂亮的CSS按钮样式集以及在线生成工具
    PhpStorm 4.0 & 5.0 部署本地Web应用 (转)
    PHP的serialize序列化数据与JSON格式化数据
    c/c++中产生随机数
    [STL系列]开篇简单介绍
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700535.html
Copyright © 2011-2022 走看看