zoukankan      html  css  js  c++  java
  • JAVA Class15

    学习内容:

    集合框架:

    1.ArrayList:

    只能存入引用类型,JDK1.5版本之后可以存入数值,是因为有自动装箱机制,数值转为引用类型

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    public class Test {
        public static void main(String[] args) {
            ArrayList list = new ArrayList();//只能放入引用类型
            list.add("abc");
            list.add(1);//自动装箱
            list.add(123);
            }
    }

    2.Collection接口

    Collection接口可以由其实现类向上转型实例化:

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    public class Test {
        public static void main(String[] args) {
            Collection<String> coll = new ArrayList<String>();
            coll.add("3号");
            coll.add("1号");
        }
    }

    remove方法要注意的一点:

    如果有list内多个相同值,会移除找到的第一个值

    3.迭代器

    迭代器Iterator可用来遍历集合

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    public class Test {
        public static void main(String[] args) {
            Collection<String> c = new ArrayList<String>();
            c.add("P90");
            c.add("rush");
            c.add("B");
            c.add("GO");
            Iterator<String> it = c.iterator();//迭代器,也要添加泛型
            System.out.println(it.hasNext());//是否有下一个值,返回布尔值
            System.out.println(it.next());//获取对象
            while(it.hasNext()) {
                String s = it.next();
                System.out.println(s);
            }
            //for循环
            for(Iterator<String> i = c.iterator();it.hasNext();) {
                System.out.println(it.next());
            }
            //利用for循环,迭代器使用完毕自动回收
            }
    }

    4.泛型

    (1)如果不添加泛型可能会使得对象转型报错:

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    public class Test {
        public static void main(String[] args) {
            Collection co = new ArrayList();
            co.add("123");
            co.add(123);
            co.add(1.45);
            Iterator t = co.iterator();
            while(t.hasNext()) {
                String ss = (String)t.next();//没有泛型,类型转换报错 ClassCastException
                System.out.println(ss.length());
            }
        }
    }

    (2)泛型通配符:

    定义泛型通配符,可使集合存入任意类型值

    public static void get2(Collection<?> coll) {//通配符
        Iterator<?> it = coll.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }

    (3)泛型边界

    import java.util.ArrayList;
    public class Test3 {
    
        public static void main(String[] args) {
                ArrayList<Chef> cf = new ArrayList<Chef>();
                ArrayList<? extends Emp> list = cf;//? extends Emp 表示这是一个Emp泛型的子类泛型
                Chef c = new Chef("1号",40);
                cf.add(c);
                Emp e = new Emp("a",30);
                //list.add(c);//但是,不能往里面对象 因为list的泛型 有可能是Emp类的其他子类
                ArrayList<? super Emp>liste = new ArrayList<Object>(); //? super Emp 表示 liste的泛型是Emp或者其父类泛型
                liste.add(c);//也可以放子类
                liste.add(e);//可以放Emp类
                //但这样取出时有风险,如果集合内有Emp的其他子类,那例如Chef c = (Chef)liste.get(index);有可能报错
        }
    }

     

  • 相关阅读:
    边框的各种样式
    内容溢出显示省略号
    UNIAPP开发注意事项
    css文本的三条线 删除线 下划线 上划线
    防抖截流
    浏览器窗口改变触发的函数
    ES5数组方法
    弹性布局
    ubuntu16.04 安装adb
    git clone
  • 原文地址:https://www.cnblogs.com/whwjava/p/8855358.html
Copyright © 2011-2022 走看看