Java集合关系

作者: 迷糊银儿 | 来源:发表于2018-12-15 23:01 被阅读14次

    数组和集合的比较

    数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下:

    1. 数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身!
    2. 数组容易固定无法动态改变,集合类容量动态改变。
    3. 数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数
    4. 集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式
    5. 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率
    • Collection和Map,是集合框架的根接口。
    • Collection的子接口:Set、List
    • Set的子接口:SortedSet接口

    List集合

    有序列表,允许存放重复的元素;
    实现类:
    ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)
    LinkedList:双向链表实现,增删快,查询慢 (线程不安全)
    Vector:数组实现,重量级 (线程安全、使用少)

    List常用方法:
    void add(int index, Object element) :添加对象element到位置index上
    boolean addAll(int index, Collection collection) :在index位置后添加容器collection中所有的元素
    Object get(int index) :取出下标为index的位置的元素
    int indexOf(Object element) :查找对象element 在List中第一次出现的位置
    int lastIndexOf(Object element) :查找对象element 在List中最后出现的位置
    Object remove(int index) :删除index位置上的元素 
    ListIterator listIterator(int startIndex) :返回一个ListIterator 跌代器,开始位置为startIndex 
    List subList(int fromIndex, int toIndex) :返回一个子列表List ,元素存放为从 fromIndex 到toIndex之前的一个元素
    

    set集合

    无序集合,不允许存放重复的元素,允许使用null元素;对 add()、equals() 和 hashCode() 方法添加了限制。
    实现类
    HashSet:存储无序
    LinkedHashSet:存储有序
    子接口SortedSet的实现类
    TreeSet:排序的Set集合

    Map

    集合框架的第二类接口树。
    它提供了一组键值的映射。其中存储的每个对象都有一个相应的关键字(key),关键字决定了对象在Map中的存储位置。关键字应该是唯一的,每个key 只能映射一个value。

    实现类:

    • HashMap:存储无序
    • Hashtable:线程安全的,不允许null的键或值;
    • TreeMap:存储有序
    • LinkedHashMap: 此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。存储的数据是有序的。

    相关文章

      网友评论

        本文标题:Java集合关系

        本文链接:https://www.haomeiwen.com/subject/lqyzhqtx.html