您的位置:首页 > 职场人生

黑马程序员 集合类 2 泛型

2015-07-12 22:17 253 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1、set:无序,不可以重复元素

    HashSet: 数据结构是哈希表,线程非同步

    TreeSet: 可以对set集合中的元素进行排序(Ascall码顺序)

        底层数据结构是二叉树

        保证元素唯一性的依据

        compareTo方法return 0

    TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现comparable接口,覆盖

compareTo方法: 这种方式也称为元素的自然顺序,或者叫做默认顺序。

    TreeSet排序的第2种方式:当元素本身不具备比较性时,或者具备的比较性不是说是需要的

,这是就需要让集合自身具备比较性

    在集合初始化时,就有了比较方式。

    当两者方式都存在时,以比较器为主。

(注):排序时,当主要条件相同时,一定判断次要条件

2、泛型:1.5版本出现的,为了解决安全,是一个安全机制。

    好处:

    1)将运行时期出现问题ClassCastException,转移到了编译时期。

        方便与程序员解决问题。让运行事情问题减少,安全。

    2)避免了强制转换麻烦。

    格式:通过<>来定义操作的引用数据类型

    在使用java提供的对象时,什么时候写泛型呢?

    通常在集合框架中很常见

    只有见到定义了<>就是泛型

    其实<>就是用来接收类型的

    当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可

    泛型类定义的泛型,在整个类中有效。如果被方法使用,

    那么泛型类的对象明确要操作的具体泛型类后,所以要操作的类型

    为了让不同方法可以操作不同类型,而且类型还不确定。

    那么可以将泛型定义为方法上。

    特殊之处:

    静态方法不可以访问类上定义的泛型,

    如果静态方法操作的应用数据类型不确定,可以将方法定义在类型上。

    public static <T> void show(T t){}

    泛型定义在接口上。

    interface Inter<T>{void show(T t);}

3、限定

    ? 通配符。也可以理解为占位符。

    泛型的限定;

    ? extends E;可以接受E类型或者E的子类型。上限

    ? super E;可以接受E类型或者E的父类型。下限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: