首页 未命名正文

linux编程_Java聚集类型详解

云返利网 未命名 2020-05-26 09:08:38 12 0

一.前言

    作为Java面试的常客【聚集类型】是永恒的话题;在开发中,主要领会详细的使用,没有太多的去关注详细的理论说明,掌握那几种常用的聚集类型貌似也就够使用了;导致这一些聚集类型的理论有可能经常的遗忘,下面就对聚集类型举行详细的先容。

二.聚集树继续图解

  聚集类型主要有3种:set(集)、list(列表)和map(映射)。

Collection接口
    Collection是最基本的聚集接口,一个Collection代表一组Object,即Collection的元素(Elements)。Java SDK不提供直接继续自Collection的类,Java SDK提供的类都是继续自Collection的“子接口”如List和Set。
  所有实现Collection接口的类都必须提供两个尺度的组织函数:无参数的组织函数用于建立一个空的Collection,有一个 Collection参数的组织函数用于建立一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个组织函数允许用户复制一个Collection。
  若何遍历Collection中的每一个元素?岂论Collection的现实类型若何,它都支持一个iterator()的方式,该方式返回一个迭代子,使用该迭代子即可逐一接见Collection中每一个元素。典型的用法如下:

    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 获得下一个元素
    }

  由Collection接口派生的两个接口是List和Set。

 三.聚集实现类

Collection接口:

      List接口:【实现类: LinkedList,Vector,ArrayList】

      Set接口:【实现类: HashSet、LinkedHashSet】   
      SortedSet接口:【’实现类:TreeSet】 

Map接口:

      Map接口:【实现类:HashMap、Hashtable、LinkedHashMap、Properties】

1、List:有序列表,允许存放重复的元素

     实现类: 
                ArrayList:数组实现,需要一块延续的存储空间,查询快,增删慢,差别步,线程不平安,轻量级;
                LinkedList:链表实现,增删快,查询慢; 
                Vector:数组实现,同步,线程平安,重量级;基于Array的List,实在就是封装了Array所不具备的一些功效利便我们使用,它不可能走出Array的限制。性能也就不可能逾越Array。以是,在可能的情况下,我们要多运用Array。另外很主要的一点就是Vector“synchronized”的,这个也是Vector和ArrayList的唯一的区别。ArrayList:同Vector一样是一个基于Array上的链表,然则差别的是ArrayList不是同步的。以是在性能上要比Vector优越一些,然则当运行到多线程环境中时,可需要自己在治理线程的同步问题。LinkedList:LinkedList差别于前面两种List,它不是基于Array的,以是不受Array性能的限制。它每一个节点(Node)都包罗两方面的内容:1.节点自己的数据(data);2.下一个节点的信息(nextNode)。以是当对LinkedList做添加,删除动作的时刻就不用像基于Array的List一样,必须举行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。 

2、Set:无序聚集,不允许存放重复的元素

    实现类: 

              HashSet: HashSet的后台有一个HashMap,equals返回true,hashCode返回相同的整数,哈希表:存储的数据是无序的;初始化后台容量;只不过天生一个HashSet的话,系统只提供key的接见;如果有两个Key重复,那么会笼罩之前的;

              LinkedHashSet:此实现与 HashSet 的差别之外在于,后者维护着一个运行于所有条目的双重链接列表。存储的数据是有序的。

             子接口SortedSet,对Set排序实现类 :TreeSet:使用元素的自然顺序对元素举行排序,或者凭据建立 set 时提供的 Comparator 举行排序;二叉树实现的; 

3、Map
            HashMap:键值对,key不能重复,然则value可以重复;key的实现就是HashSet;value对应着放;允许null的键或值;
            Hashtable:线程平安的,不允许null的键或值;
            Properties:key和value都是String类型,用来读配置文件;TreeMap:对key排好序的Map; key 就是TreeSet, value对应每个key; key要实现Comparable接口或TreeMap有自己的组织器;

            LinkedHashMap:此实现与 HashMap 的差别之处在于,后者维护着一个运行于所有条目的双重链接列表。存储的数据是有序的。

4、两个工具类 Arrays 和 Collections
             Arrays、此类包罗用来操作数组(好比排序和搜索)的种种方式。

【关于云返利网】

云返利网是阿里云、腾讯云、华为云产品推广返利平台,在各个品牌云产品官网优惠活动之外,云返利网还提供返利。您可以无门槛获得阿里云、华为云、腾讯云所有产品返利,在官网下单后就可以领取,无论是自己用、公司用还是帮客户采购,您个人都可以获得返利。云返利网的目标是让返利更多、更快、更简单!详情咨询13121395187(微信同号)