zoukankan      html  css  js  c++  java
  • 集合,,,ArrayList集合存储元素,,,Collection接口的基本方法,,, Iterator迭代器,,,集合元素的向下转型

    第1章     集合

    集合,集合是java中提供的一种容器,可以用来存储多个数据。

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

    1.1      ArrayList集合存储元素

    ArrayList集合存储5个int类型元素

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

    ArrayList集合存储5个Person类型元素

    package com.oracle.Demo01;
    
    import java.util.ArrayList;
    
    public class Jihe {
    public static void main(String[] args) {
        ArrayList<Person> arr=new ArrayList<Person>();
        arr.add(new Person("小红",12));
        arr.add(new Person("小丸子",13));
        arr.add(new Person("薯条",15));
        arr.add(new Person("可乐",17));
        arr.add(new Person("汉堡",10));
        for(Person i:arr){
            System.out.println(i);
        }
    }
    }
    package com.oracle.Demo01;
    
    public class Person {
    String name;
    int age;
    
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    
    }

    1.2      集合的继承实现关系

     List有序,允许元素重复。set无序,不允许元素重复

    1.3    Collection接口的基本方法

    创建集合的格式:

    方式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"));//判断coll里有没有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();
    //清空后,集合元素为[],代表没有元素

    第2章     Iterator迭代器

    hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。

    next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。

    1.1      Iterator迭代方式的代码体现

    在Collection接口描述了一个抽象方法iterator方法,所有Collection子类都实现了这个方法,并且有自己的迭代形式。

    //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 i = coll.iterator(); i.hasNext(); ) {
        System.out.println(it.next());
    }
    */

          

         集合元素的向下转型

    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());
    }
     
    Collection<Integer> arr=new ArrayList<Integer>();
            arr.add(123);
            arr.add(234);
            arr.add(456);
            Iterator<Integer> it=arr.iterator();
            while(it.hasNext()){
                if(it.next()==234){
                    arr.add(666);//不能直接添加元素
                }
            }
  • 相关阅读:
    poj 3415 后缀数组+单调栈
    hdu 3450 后缀数组
    hdu 2774 后缀数组
    后缀数组模板(倍增法)
    hdu 4405 概率dp
    zoj 3329 概率dp
    [日常摸鱼]bzoj2875[NOI2012]随机数生成器-矩阵快速幂
    [日常摸鱼]bzoj1038[ZJOI2008]瞭望塔-半平面交
    [日常摸鱼]bzoj1007[HNOI2008]水平可见直线-半平面交(对偶转凸包)
    [日常摸鱼]bzoj3083遥远的国度-树链剖分
  • 原文地址:https://www.cnblogs.com/111wdh/p/13293993.html
Copyright © 2011-2022 走看看