java集合

来源:互联网 发布:数据相似度算法 编辑:程序博客网 时间:2024/04/29 20:50

在计算机科学中:数据结构和算法,需要花费大量的时间和精力。
 
集合体系:见java必备的截图

   一、集合接口   详见API文档。
     
《一》Collection
   
    1、Collection接口
      java库中用于集合类的基本接口就是他 ,他的常见方法:boolean add(Object obj);Iterator iterator();
       
   注意:各个方法的参数,
             其中的iterator()返回的是一个Iterator接口的对象,这个对象实现了Iterator接口仅有的三个方法,
             然后这个对象就可以使用这三个方法。             
   
     2、Iterator接口 
        又被称为迭代器。仅有三个方法:Object next(); boolean hasNext();void remove();
        注意:每一种数据结构的存储方式不同,遍历的方法也不同,每一种数据结构都有各自的iterator()的具体实现,
              每种数据结构的存储不同,但是都有一样的 判断和 取出的 动作,将这些动作封装之后就是iterator(),
              iterator()是对外提供的方法,具体的实现都是通过各自的内部类实现的。可以见源代码中的具体内部类。
       
     3、ArrayList:底层的数据结果是数组结构,特点:查询速度快,增删慢;线程不同步;
       
        LinkList:底层的数据结构是链表,特点:增删快,查询慢;它其中的方法注意查询;
       
        Vectory:和ArryList一样,Vectory出现在1.0。线程同步;被ArryList替代。
                枚举是它的特有的取出方式,被迭代器取代。

     
    4、HashSet: 底层数据结构是哈希表;自定义对象的时候,注意hashCode()和equals(),要复写,因为自带的方法返回的都是不同的哈希地址,
                就失去意义了,简单地说就是自定义对象的时候,要求返回的哈希值相同。对于相同对象,hashCode方法返回的哈希值一样,
                紧接着会调用equals方法比较对象的内容是否一样,一样就不存。线程不同步。
             
                自动调用hashCode()和equals()。
      
      TreeSet: 可以对集合中的对象排序,按照字典顺序排序,往里面存的对象是要排序的,要求对象首先具有可比较性,必须继承Comparable接口,
               该接口强制对象的类具有比较性,然后覆盖接口的方法compareTo(),自定义排序方法。具体的查看API中Comparable接口。
               还有一种比较方法,就是自定义的定义,当对象不具有比较功能的时候,改变构造方法。
 
               底层的数据结构是:二叉树,元素多的话,二叉树会取折中值,默认从小到大取值;二叉树在存数据的时候,依据于compareTo()的返回结果;
              自动调用compareTo()。java很多的类已经是实现了compareTo(),都有比较性并且有特有的比较方法。

《二》、Map
  
      1、Hsahtable:底层是实现哈希表,不可以存入null值和null键;线程同步。jdk1.0
      2、Hashmap:底层是实现哈希表,允许null值和null键;线程不同步。 效率高,jdk1.2
      3、Treemap:底层的数据结构是:二叉树,线程不同步,可以给map集合中的键值排序。
                 和Set很像,其实set集合底层使用的是map
 
《三》、集合框架工具类
  
        集合中涉及许多数据结构的细节,集合框架提供了许多方法,屏蔽了数据结构底层的操作,是操作集合类变得简单,但是建议看看每个
        工具类的具体方法的实现的源码。对数据结构,有会有认识。
 
        Collections 类
               
                 对集合进行操作的类;参照API的方法集。
       Arrys类
            
                对集合进行操作的类


     迭代器支持所有的Collection集合,不支持Map集合,高级for循环支持含有迭代器的集合和数组。Map集合可以变通地使用高级for遍历。
               
      
 二、比较
   
     
 接口 Comparable<T> 是java.lang 中的接口,只有一个方法compareTo();
                           此接口强行对实现它的每个类的对象进行整体排序。
                           这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。


       
 接口 Comparator<T> 是java.util 中的接口,有两个方法compare()和equals();
                           强行对某个对象 collection 进行整体排序 的比较函数。