Java:Collection集合、泛型

作者: 烟火式Java | 来源:发表于2018-09-13 17:57 被阅读9次

    1、Collection集合-概述

    1)、集合是一个装”引用类型”的”容器”

    2)、Java内部提供了很多”集合类”,每种集合类对元素的存储采用了不同的”数据结构”–集合存储数据的方式。

    3)、这些数据结构都是各有千秋,有的增删快,查询慢;有的增删慢,查询快

    4)、常用数据结构:

    ​ 1)、数组:ArrayList(增删慢,查询快,常用于查询)

    ​ 2)、链表:LinkedList(增删快,查询慢,常用于操作数据)

    ​ 3)、哈希表:HashSet(增删改查都快,但每次都要生成哈希值)

    ​ ……

    5)、集合体系 

    2、Collection接口中的常用功能能

    1)、添加

    public boolean add(E e): 把给定的对象添加到当前集合中 。

    ​ ArrayList会永远返回true;

    ​ set中添加重复元素时,返回false;

    2)、删除

    public void clear() :清空集合中所有的元素。

    public boolean remove(E e): 把给定的对象在当前集合中删除。

    ​ 当移除多个相同元素,只移除遇到的第一个

    3)、判断

    public boolean contains(E e): 判断当前集合中是否包含给定的对象。

    public boolean isEmpty(): 判断当前集合是否为空。

    4)、获取

    public int size(): 返回集合中元素的个数。

    public Object[] toArray(): 把集合中的元素,存储到数组中。

    5)、遍历

    public Iterator iterator():获取一个迭代器

    3、iterator迭代器

    public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。

    ​ 1)、public boolean hasNext():如果仍有元素可以迭代,则返回 true。

    ​ 2)、public E next():返回迭代的下一个元素。

    publicstaticvoidmain(String[] args) {        

    Collection list =newArrayList<>();        

    list.add("aaa");        

    list.add("bbb");        

    list.add("ccc");        

    list.add("ddd");        

    System.out.println(list);        

    Iterator iterable = list.iterator();while(iterable.hasNext()){            

    System.out.println(iterable.next());        

    }    

    }

    4、迭代器原理

    5、迭代器-增强for

    1)、增强for也叫:foreach循环,是一种for循环的新写法;

    2)、使用增强for可以遍历数组、集合:

    ​ 1)、数组:

    int[] arr = {1,2,3,4,5,6};for(int i = 0; i < arr.length ; i++){

        int n = arr[i];

        System.out.println(n);

    }//增强forfor(int n:arr){//底层编译为:普通for循环    System.out.println(n);

    }

    ​ 2)、集合:

    ArrayList list =newArrayList<>();

    //增强forfor(String str:list){

    //底层编译为:迭代器System.out.println(str);

    }

    6、泛型-泛型概述

    1)、ArrayList list = new ArrayList<>();

    ​ String就是这个集合的泛型

    ​ 集合中只允许写入泛型的类型数据

    2)、泛型的好处:可以让编译器帮助我们监视,只能向集合中添加指定的类型

    7、 泛型-定义和使用含有泛型的类

    泛型定义说明:

    ​ 1)、中的E:可以是大写、小写、字符、多个字符;

    ​ 2)、类中的方法可以使用这个类型名

    class Student<E>{

        public void add(E e){}

        public E get(){return null;}

    }

    测试类:

    Student<引用类型> stu = new Student<>();

    stu.add(引用类型 对象名);

    stu.get();//返回对应的引用类型

    8、泛型-含有泛型的方法

    public classStudent{ public <E> void sum(E e1,E e2,E e3,E e4){//定义一个接收4个相同的值 System.out.println("e1 = "+e1);

            System.out.println("e2 = "+e2);

            System.out.println("e3 = "+e3);

            System.out.println("e4 = "+e4);

        }

    }

    测试类:

    public static void main(String[] args) {

            Student student = new Student();

            student.<Integer>sum(1,2,3,4);//规定4个值的泛型为Integer        

           student.<String>sum("aaa","bbb","ccc","ddd");//String    

    }

    9、泛型-含有泛型的接口

    同泛型类:

    public interfaceIA{

     public void add(E e);

    }

    10、泛型-泛型通配符

    1)、定义一个方法,方法的参数:任何泛型的集合

    **

    class Demo{

        public static void main(String[] args){

            ArrayList<String> list1 = new ArrayList<>();

            ArrayList<Integer> list2 = new ArrayList<>();

            ArrayList<Student> list3 = new ArrayList<>();

            p1(list1);//OK的        p1(list2);//OK的        p1(list3);//OK的        p1("呵呵");//错误        }

        public static void p1(ArrayList<?> list){

        }

    }

    2)、定义一个方法,方法的参数:一个类和他的子类做泛型的集合(

    class Person{}

    class Student extends Person{}

    class JavaStudent extends Student{}

    测试类:

    class Demo{

        public static void main(String[] args){

            ArrayList<Person> list1 = new ArrayList<>();

            ArrayList<Student> list2 = new ArrayList<>();

            ArrayList<JavaStudent> list3 = new ArrayList<>();

            p1(list1);//错误        p1(list2);//OK的        p1(list3);//OK的    }

        public static void p1(ArrayList<? extends Student> list){}

    }

    3)、定义一个方法,方法的参数:一个类和他的父类做泛型的集合(

    class Demo{

        public static void main(String[] args){

            ArrayList<Person> list1 = new ArrayList<>();

            ArrayList<Student> list2 = new ArrayList<>();

            ArrayList<JavaStudent> list3 = new ArrayList<>();

            p1(list1);//OK的        p1(list2);//OK的        p1(list3);//错误    }

        public static void p1(ArrayList<? super Student> list){}

    }

    复习

    [ ] 能够说出集合与数组的区别

    1、集合的长度是可变的,集合可以存放引用类型

    2、数组的长度是有限的,数组可以存放任意类型

    [ ] 说出Collection集合的常用功能

    .add(E e):向集合中添加元素

    .clear():将集合清空

    .remove(E e):清除集合中的特定元素

    .contains(E e):查找集合中是否有这个元素,返回boolean

    .isEmpty();检查集合是否为空,为空返回true

    .size():返回集合的长度

    .toArray():将集合转化为数组返回

    [ ] 能够使用迭代器对集合进行取元素

    Iterator i = list.iterator;

    i.hasNext():检查集合中下一个是否有元素

    i.Next():返回集合中的数据

    [ ] 能够说出集合的使用细节

    [ ] 能够使用集合存储自定义类型

    [ ] 能够使用foreach循环遍历集合

    ArrayList<数据类型> list = new ArrayList<>();

    for(数据类型 对象名:list){遍历}

    [ ] 能够使用泛型定义集合对象

    [ ] 能够理解泛型上下限

    [ ] 能够阐述泛型通配符的作用

    确定一个系统的学习Java的计划,如果想自学,那么你就找一套非常系统的学习视频。如果你自己找不到系统的学习视频。可以加下小编的Java学习群:557865078,编号(烟火),不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的Java学习资料和0基础入门教程,欢迎初学和进阶中的小伙伴

    相关文章

      网友评论

        本文标题:Java:Collection集合、泛型

        本文链接:https://www.haomeiwen.com/subject/aphggftx.html