Java的集合、Iterator迭代器

1、集合
(1)集合存储的元素必须是引用类型数据[自动装箱(基本类型—>包装类)]jdk1.5版本之后

建立一个  demo01  类

package com.oracle.demo01;

public class demo01 {
       private String name;
       private Integer age;
    public demo01() {
        super();
    }
    public demo01(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "demo01 [name=" + name + ", age=" + age + "]";
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    
}

建立一个  demo02  测试类

package com.oracle.demo01;

import java.util.ArrayList;

public class demo02 {

    public static void main(String[] args) {
        ArrayList<demo01> list = new  ArrayList<demo01>();
        list.add(new demo01("熊大",20));      //这里的20、19、30虽然是int基本类型,但是由于自动装箱的缘故,是Integer引用数据类型
        list.add(new demo01("熊二",19));
        list.add(new demo01("琪琪国王",30));
        //遍历
        for(int i = 0;i < list.size();i++){
            System.out.println(list.get(i));
        }
    }

}

(2)collection接口的基本方法:
contains(Object o):boolean;toArray():Object[](数组);

package com.oracle.demo01;

import java.util.ArrayList;
import java.util.Collection;

public class demo03 {

    public static void main(String[] args) {
        Collection<String> col = new  ArrayList<String>();
        col.add("你好");
        col.add("双十一");
        col.add("买买买");
        //移除
        /*col.remove("你好");*/
        //是否包含  返回布尔值
        System.out.println(col.contains("双十一"));
     //清除
/*col.clear();
     //遍历得到的是一个空集合 ArrayList<String> list = (ArrayList<String>)col; for(int i = 0; i < list.size();i++){ System.out.println(list.get(i)); }
*/ //返回一个数组 Object[] obj = col.toArray(); for(int i = 0;i < obj.length;i++){ System.out.println(obj[i]); } } }

效果如下:

(3)Collection变量名= new ArrayList();不指定范型;
集合的元素类型默认为Object类型,即任何类型的元素都可以存储。
使用时注意判断、向下转型;

举个例子:

package com.oracle.demo01;

import java.util.ArrayList;
import java.util.Collection;

public class demo05 {

    public static void main(String[] args) {
        //Collection也可以不写范型
        Collection col = new  ArrayList();
        //默认Object  什么类型都可以存   但是会出现警告
        col.add("123");
        col.add(123);
        col.add(12.3);
        //ArrayList 也可以不写范型
        ArrayList   list = (ArrayList)col;
        for(int i = 0;i < list.size();i++){
            if(list.get(i) instanceof String){
                System.out.println(list.get(i));
            }    
        }    
    }

}

效果如下:

 


2、Iterator迭代器
(1)Collection集合元素的通用获取方式:
在取元素之前先要判断集合中有没有元素,
如果有,就把这个元素取出来,
继续在判断,如果还有就再取出出来。
一直把集合中的所有元素全部取出。
这种取出方式专业术语称为迭代。
(2)获取迭代器 iterator():Iterator<E>;
(3)判断集合中有没有元素:hasNext():boolean;
(4)把这个元素取出来:next():E;

举个例子:

package com.oracle.demo01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class demo04 {

    public static void main(String[] args) {
          //迭代器
        Collection<String> col = new ArrayList<String>();
        col.add("abc");
        col.add("deg");
        //获取迭代器对象
        Iterator<String> it = col.iterator();
        System.out.println(it.hasNext());
        System.out.println(it.next());
        System.out.println("...");
        System.out.println(it.hasNext());
        System.out.println(it.next());
        System.out.println("...");
        System.out.println(it.hasNext());
        System.out.println(it.next());
    }

}

效果如下:

 

 可以运用while循环将代码优化成如下:

package com.oracle.demo01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class demo04 {

    public static void main(String[] args) {
          //迭代器
        Collection<String> col = new ArrayList<String>();
        col.add("abc");
        col.add("deg");
        //获取迭代器对象
        Iterator<String> it = col.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

}

效果如下:

 

 

 

posted on 2018-10-08 16:49  孙崇武  阅读(400)  评论(0编辑  收藏  举报

导航