A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 森111 中级黑马   /  2018-11-20 16:05  /  407 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      集合概述:

集合就是一种容器,可以存储多个数据

数组和集合的区别:

数组可以存储基本数据类型和引用类型,数组长度固定不可变

集合只能存储引用类型,长度可以改变

    Collection 是所有单列集合的父接口

  • public boolean add(E e):  把给定的对象添加到当前集合中 。
  • public void clear() :清空集合中所有的元素。
  • public boolean remove(E e): 把给定的对象在当前集合中删除。
  • public boolean contains(E e): 判断当前集合中是否包含给定的对象。
  • public boolean isEmpty(): 判断当前集合是否为空。
  • public int size(): 返回集合中元素的个数。
  • public Object[] toArray(): 把集合中的元素,存储到数组中。
Collection接口不能直接创建对象,需要使用多态,创建子类对象来调用方法



Collection集合中的元素没有索引,想要遍历不能使用for循环,可以用迭代器进行遍历

迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来.一直把集合中的所有元素全部取出.这种取出方式专业术语称为迭代.

Iterator接口的常用方法如下:

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

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

在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误.


增强for

for(元素的数据类型  变量 : Collection集合or数组){

          //写操作代码

}

它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作.增强for循环必须有被遍历的目标。目标只能是Collection或者是数组。


泛型:

一种未知的类型.(也可以看做是一个变量进行接收数据类型)

一般在创建对象时,将未知的类型确定具体的类型.当没有指定泛型时,默认类型为Object类型.

public class GenericDemo {

        public static void main(String[] args) {

                Collection coll = new ArrayList();

                coll.add("abc");

                coll.add("itcast");

                coll.add(5);//由于集合没有做任何限定,任何类型都可以给其中存放

                Iterator it = coll.iterator();

                while(it.hasNext()){

                        //需要打印每个字符串的长度,就要把迭代出来的对象转成String类型

                        String str = (String) it.next();

                        System.out.println(str.length());

                }

        }

}

泛型使用的好处:

  • 将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
  • 避免了类型强转的麻烦。
定义和使用含有泛型的类:

定义格式:

修饰符 class 类名<代表泛型的变量> {  }

例:

class ArrayList<E>{

    public boolean add(E e){ }


    public E get(int index){ }

           ....

}

含有泛型的方法

定义格式:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){  }

例:

public class MyGenericMethod {          

    public <MVP> void show(MVP mvp) {

            System.out.println(mvp.getClass());

    }


    public <MVP> MVP show2(MVP mvp) {       

            return mvp;

    }

}


含有泛型的接口

定义格式:

修饰符 interface接口名<代表泛型的变量> {  }

例:

public interface MyGenericInterface<E>{

        public abstract void add(E e);


        public abstract E getE();  

}


泛型通配符

当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用

泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符

通配符高级使用----受限泛型

泛型的上限:

格式: 类型名称 <? extends 类 > 对象名称

意义: 只能接收该类型及其子类

泛型的下限:

格式: 类型名称 <? super 类 > 对象名称

意义: 只能接收该类型及其父类型





























0 个回复

您需要登录后才可以回帖 登录 | 加入黑马