zoukankan      html  css  js  c++  java
  • 集合中的简单知识

    集合有一方面(其他方面我也不清楚,应该有其他方面吧0.0)是为了方便来使用的,在集合的底层也是使用数组或者链表来使用的,

    就拿底层是数组的ArrayList来说,虽说集合是可增长的,但是在其内部也是先使用一个数组来存储,

    如果添加的数据超过了这个数组的长度,集合也是建立一个新的数组来存储的,旧的舍弃。你可以用数组来代替

    ArrayList去存储对象,但是java已经封装好了一个函数来写这个过程自己就不必再写了。

    当然如果你认为ArrayList不方便可以自己写一个方法来实现这些功能。

    集合分为单列集合和双列集合

    单列集合的根接口是Collection

      Collection 下的接口分为list和set(你可以百度找找list和set集合中数据存储的特点)用迭代器Iterator来迭代(遍历)

        list接口下有ArrayList和LinkedList和vector,现在vector基本已经被ArrayList替代了,

          ArrayList集合因为底层用的是数组,所以查询快,修改快,增删慢,线程不安全,效率高;

            (数组查询可以用索引,利用索引修改,但是增删了数据其后面的数据都要往后/往前移动)

          LinkedList集合因为底层用的是链表,所以增删快,查询慢,修改慢,线程不安全,效率高;

            (链表查询是从第一个查到要查找的那一个,修改也要从第一个查找到要改的那一个,增加和删除只要找到并改动前一个和后一个的地址值就可以增删了)

          Vector底层也是用的数组,但是因为是线程安全的,所以效率较低。

        set接口下有HashSet和TreeSet,

          HashSet中只能存不同的对象,当然如果是你自己定义的对象的话,对象需要重写hashCode()和equals()方法,

          毕竟HashSet也不能靠着名字存不同且无序的对象;使用HashSet的时候是先比较hashCode()看值是否相同,相同的话调用equals()比较是否是相同的对象

          TreeSet中需要填进去的对象实现comparable接口并重写compareTo()方法(自然排序),当方法返回0时,集合中只有一个元素,

          当返回值为正数时怎么存就怎么取,返回值是负数时和存的顺序相反,在自己写类中利用compareTo的返回值来保证排序及唯一。

          (也能利用比较器来进行比较,即在TreeSet中传入comparator子类对象,用一个类实现comparator接口并传入TreeSeet中)

    双列集合的根接口Map,即键值对存储内容

      Map的键是唯一的,而在Collection中的子体系set(元素)是惟一的。Set底层依赖的是Map,即单列集合依赖双列集合(主要是数据从有到无可以,从无到有不可能)

      Map中是没有Iterator迭代器的,但是在Map中又一个KeySet()方法,里面存储了key,可以通过key获得value即通过键和对应的值来获取。

      还有另一种比较推荐的获取键值对的方法:在Map实现类中有内部类Entry,即 Set<Map.Entry<K,V>,Map.Entry<k,v>是个接口的内部接口并且将建和值封装成了Entry对象,

      并存储在Set集合中(说着麻烦,多用几次就理解了)理解了后可以用增强for来做,比较简洁明了。(这里都是用的HashMap来说明的)

    HashMap和Hashtable的区别 :HashMap是线程不安全的,效率高;

                  Hashtable是线程安全的,效率低;

                  HashMap可以存储null键和null值Hashtable不能;

      

  • 相关阅读:
    JsonParse类
    vs2013提交项目到github
    js选中select
    按每20条分组查询
    批量修改图片格式
    当前日期后10天日期
    C#生成不重复随机数的方法
    接收端通过Request.InputStream读取流
    C#文件流的读写
    C#中HttpWebRequest的用法详解
  • 原文地址:https://www.cnblogs.com/toomucherror/p/10511259.html
Copyright © 2011-2022 走看看