集合迭代器增强for

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合迭代器增强for相关的知识,希望对你有一定的参考价值。

collection 和 list set 和 ArrayList LinkedList HashSet LinkedHashSet的关系

collection接口的方法

add()   clear()  contains()  remove()  size()  toArray() 公用方法

public static void method(){
        // 注意:集合中只能存放引用数据类型
                //之所以集合中可以存放int类型的值是因为JDK5以后的自动装箱特性
                ArrayList<Integer> list = new ArrayList<Integer>();
                list.add(1);
                list.add(2);
                
                for(int i = 0;i<list.size();i++){
                    System.out.println(list.get(i));
                }
//                for(int i:list){
//                    System.out.println(i);
//                }
    }
    public static void method2(){
        ArrayList<Person> list = new ArrayList<Person>();
        list.add(new Person("houyi",28));
        list.add(new Person("liyuanfang",27));
        list.add(new Person("wangzhaojun",18));
        for(Person p:list){
            System.out.println(p);
        }
        
        }
    public static void method3(){
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("aaa");
        arr.add("aaa");
        arr.add("bbb");
        Object[] str = arr.toArray();
        for(int i = 0;i<str.length;i++){
            System.out.println(str[i]);
        }
        for(Object o:str){
            System.out.println(o);
        }
    }
    public static void method1(){
        Collection c = new ArrayList();
        c.add("123");
        c.add("456");
        //c.add(1);
        for(Object obj:c){
            String str = (String)obj;
            System.out.println(str.length());
        }
    }

迭代器:用要进行迭代的集合调用方法来构建迭代器

 增强for:用来遍历集合和数组,底层就是个迭代器

注意:next()方法的使用,调用一次指针就往下走一次,最好是把它赋给一个变量,然后对变量进行操作

 

 

泛型:使用集合时,必须明确集合中元素的数据类型的方式

有泛型的类:public ArrayList<E>{} 

创建对象时,确定泛型类型

有泛型的方法:public <E> E[] toArray(E[] arr){}

调用方法时,确定泛型类型

有泛型的接口:public interface Iterator<E>{} 

定义实现类时,确定泛型类型 

创建对象时,确定泛型类型(迭代器的使用)

泛型的好处:把运行时期的类型转换问题,转移到了编译时期,避免了类型转换出错

泛型通配符:当泛型的类型不确定时,使用泛型通配符,使用了泛型通配符之后只能使用object类中的共有方法

通配符上限:?extends Person

通配符下限:?super Person

 

public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Person> list = new ArrayList<Person>();
        list.add(new Person("zzhangsan",20));
        list.add(new Person("lisi",22));
        ArrayList<Studnet> l = new ArrayList<Studnet>();
        l.add(new Studnet("xiaoming",22));
        l.add(new Studnet("xiaohong",21));
        printCollection(l);
    }
    public static void printCollection(Collection<?> list){
        Iterator<?> it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

 

以上是关于集合迭代器增强for的主要内容,如果未能解决你的问题,请参考以下文章

for循环增强for循环和迭代器的区别

集合迭代器增强for

集合并发修改异常-增强for循环,或者迭代器遍历的时候不可修改值

java 中 colkection集合迭代器增强for泛型

迭代器和增强for循环

day191集合 2Iterator迭代器 3增强for循环 4泛型