zoukankan      html  css  js  c++  java
  • 集合 和 Iterator迭代器

    集合介绍

    集合,集合是java中提供的一种容器,可以用来存储多个数据。数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据。

    数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据

    ArrayList集合存储元素

    public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(111);
        list.add(222);
        list.add(333);
        list.add(444);
        list.add(555);
        for(int i=0; i<list.size(); i++){
    System.out.println(list.get(i));
    }
    }

    集合的继承实现关系

    查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口。Collection接口为最顶层集合接口。

    这说明我们在使用ArrayList类时,该类已经把所有抽象方法进行了重写。那么,实现Collection接口的所有子类都会进行方法重写。

    Collection接口常用的子接口有:List接口、Set接口

    List接口常用的子类有:ArrayList类、LinkedList

    Set接口常用的子类有:HashSet类、LinkedHashSet

    Collection接口概述

    既然Collection接口是集合中的顶层接口,那么它中定义的所有功能子类都可以使用。查阅API中描述的Collection接口。Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。

    Collection接口的基本方法

    创建集合的格式

    方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>();
    方式2:Collection 变量名 = new ArrayList();

    方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式

    方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。

    //创建集合
    Collection coll = new ArrayList();
    //1,往集合中添加对象元素。add(E e)方法,E代表创建集合时所指定的数据类型如<String>,那么,E就代表String类型;创建集合时若没有指定数据类型,那么,E就代表Object类型。
    coll.add("abc");
    coll.add("ef");
    coll.add("g");        
    //把集合打印一下。
    System.out.println(coll); //打印结果为:[abc, ef, g]
    System.out.println(coll.toString()); //打印结果为:[abc, ef, g]
    //2,从集合中删除元素。remove(Object o)方法
    coll.remove("ef");        
    //删除后,集合元素为[abc, g]
    //3,判断集合中是否包含指定元素。contains(Object o)方法
    System.out.println(coll.contains("abc"));
    //打印结果为true
    System.out.println(coll.contains("ef"));
    //打印结果为false
        
    //4,获取集合元素个数。size()方法
    System.out.println(coll.size());
    //打印结果为2
     
    //5,返回包含集合中所有元素的数组。toArray()方法
    String[] array = coll.toArray();
    //数组中的元素为{"abc", "g"}
     
    //6,清除集合元素。remove()方法
    coll.clear();
    //清空后,集合元素为[],代表没有元素

    Iterator迭代器

    java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。

    Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

    Iterator接口的常用方法

    迭代器图解

    Iterator迭代方式的代码体现

    //1,创建集合对象。
    Collection<String> coll = new ArrayList<String>();
    coll.add("abc1");
    coll.add("abc2");
    coll.add("abc3");
    coll.add("abc4");
     
    //2.获取容器的迭代器对象。通过iterator方法。
    Iterator it = coll.iterator();
     
    //3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法
    while(it.hasNext()){
        System.out.println(it.next());
    }
     
    /*
    迭代器for循环的形式的使用
    for (Iterator it = coll.iterator(); it.hasNext(); ) {
        System.out.println(it.next());
    }
    */

    注意:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。

    集合元素的向下转型

    存储时提升了Object。取出时要使用元素的特有内容,必须向下转型。

    Collection coll = new ArrayList();
    coll.add("abc");
    coll.add("aabbcc");
    coll.add(1);
    Iterator it = coll.iterator();
    while (it.hasNext()) {
        //由于元素被存放进集合后全部被提升为Object类型
    //当需要使用子类对象特有方法时,需要向下转型
        String str = (String) it.next();
        System.out.println(str.length());
    }

    如果集合中存放的是多个对象,这时进行向下转型会发生类型转换异常。

    Iterator接口也可以使用<>来控制迭代器的类型的.

    Collection<String> coll = new ArrayList<String>();
    coll.add("abc");
    coll.add("aabbcc");
    coll.add("cat");
    Iterator<String> it = coll.iterator();
    while (it.hasNext()) {
        String str = it.next();
    //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型
        System.out.println(str.length());
    }
  • 相关阅读:
    HDU_1846 Brave Game(sg函数简化版)
    POJ 3225 Help with Intervals(线段树)
    ZOJ_3501 Roman Order
    HDU_1527 取石子游戏(威佐夫博弈)
    HDU_2112 HDU Today(DIjkstra + map映射)
    HDU_3339 In Action(Dijkstra + DP)
    单链表的实现(课本上的算法)
    haproxy 基于 uri 实现调度
    haproxy 基于 cookie 实现 session 绑定
    [转]ASP.NET 虚拟主机安全漏洞解决方案
  • 原文地址:https://www.cnblogs.com/q-1234/p/9973254.html
Copyright © 2011-2022 走看看