Java集合学习

         最近特意为了巩固Java基础,找了一些基础的Java书学习了一下,现在写一写我在学习Java过程中对于Java集合框架的一些经历。

        Java集合框架主要包括三种类型的集合:Set(规则集),List(线性表),Queue(队列)

        大体上是,Set存储一组不重复的元素,List存储一个有序集合,Queue存储先进先出方式的数据集

      我们先看看他们在Java中继承的结构


            根接口为Collection,它提供了一些对集合的基本操作,如添加或删除元素

      具体提供的方法可以看图,我就不一 一说了。


      那么我们现在看看有关Set的一些特性和结构。


      Set:

         Set是一个接口,它扩展了Collection接口,但是确保了它的实现类TreeSet,HashSet不包含重复元素.

   

      HashSet:

      HashSet(散列集)是Set的实现类,所以有Set的特性,不可插入重复元素。它的基本结构是多组键值对<Key,Value>,存入的对象必须以一种正确分散散列码的方式实现hasCode方法。

     它的继承结构如下:

        HashSet随机存入一组不重复元素(存储顺序和插入顺序无关),如果要求存储顺序和插入顺序一致,LinkedHashSet可以满足要求


            LinkedHashSet:

        LinkedHashSet(链式散列集)用链表来扩展HashSet类,它可以按照插入顺序来提取元素。

      

        注:如果对插入顺序没有特殊要求,建议使用HasheSet因为它比LinkedSet更加高效。


            TreeSet:

            TreeSet(树形集)是实现SortedSet接口的具体类,顾名思义可以知道它可以对规则集进行有序插入。每当插入一个或一组无序的元素,它会对所有元素进行排序。为了提高效率,你可以用其他集合接收元素,然后用TreeSet对构造方法构造TreeSet,这样就只进行一次排序。


        接下来看看List。

        List:

        List接口扩展了Collection接口,允许集合存储重复元素。通过下标访问元素。

        它的一些方法如下:


          ArrayList:

          动态创建数组,当元素个数超过容量时,创建更大的数组。ArrayList除了在末尾之外,不能再其他位置插入或删除元素。

         

          LinkedList:

          LinkedList是实现List接口的一个链表。它可以从线性表两端提取,插入和删除元素。

          它的一些方法有:


              Vector:

         Vector(向量)类实现了List接口,与ArrayList不同之处在于它提供了同步的方法,用于防止多线程同时访问某个向量造成数据损坏。

         它的一些方法有:

        



          Stack:

          栈类Stack是Vector的扩展类,增加了一些方法





         上述集合大概的遍历方法有三种:for ,foreach ,Iterator(迭代器)

            

               我们需要了解的还有Collections类对于线性表和集合提供的一些静态方法,看看以下的API:

              



                性能比较:

            对于Set和List,一般Set的性能远远高于List。

           而HashSet  >  LinkedHashSet  >  TreeSet

           ArrayList  >  LinkedList

          

              Queue:

          Queue接口用附加的插入,提取和检验操作来扩展Collection接口。



           Deque:

            双端队列Deque接口扩展自Queue接口,它支持在队列两端插入和删除元素。LinkedList实现了该接口。


            PriorityQueue:

         PriorityQueue类实现了一个优先队列。默认情况下,它使用Comparable接口以元素的自然顺序进行排序。最小的数值的元素拥有最高的优先级。


       其他的还有Map(图)的一些知识,可以自行补充。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值