黑马程序员_Java集合总结(二)

来源:互联网 发布:双色球彩神通软件 编辑:程序博客网 时间:2024/05/21 08:37
---------------------- android培训、java培训、期待与您交流! ----------------------


一、set(集)   

        特点;里面的数据不能有重复  储存的顺序不能确定  索引不能访问其中具体数据                                                

   

    HashSet与TreeSet区别:

    1、TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值
    2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束

    3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例



二、Comparable接口和Comparator接口

      在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer等Java内建类实现Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable接口的类、或者自定义的类,可以通过Comparator接口来定义自己的比较方式。

    Comparable接口

      在java.lang包中,Comparable接口适用于一个类有自然顺序的时候。假定对象集合是同一类型,该接口允许把集合排序成自然顺序。

int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

      利用Comparable接口创建自己的类的排序顺序,只是实现compareTo()方法的问题。通常就是依赖几个数据成员的自然排序。同时类也应该覆盖equals()和hashCode()以确保两个相等的对象返回同一个哈希码。

    Comparator接口

      若一个类不能用于实现java.lang.Comparable,或者不喜欢缺省的Comparable行为并想提供自己的排序顺序(可能多种排序方式),可以实现Comparator接口,从而定义一个比较器。

           (1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值

              如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值


           (2)boolean equals(Object obj): 指示对象obj是否和比较器相等。


三、泛型

什么时候定义泛型类?
    当类中要操作的引用数据类型不确定的时候,
    早期定义Object来完成扩展。
    现在定义泛型来完成扩展。


    泛型类定义的泛型,在整个类中有效。如果被方法使用,
    那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
    为了让不同方法可以操作不同类型,而且类型还不确定。
    那么可以将泛型定义在方法上。

 特殊之处:
    静态方法不可以访问类上定义的泛型。
    如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

? 通配符。也可以理解为占位符。
    泛型的限定;
    <? extends E>: 可以接收E类型或者E的子类型。上限。
    <? super E>: 可以接收E类型或者E的父类型。下限

---------------------- android培训、java培训、期待与您交流! ----------------------
原创粉丝点击