美文网首页
java集合区别,集合框架,list,set,map

java集合区别,集合框架,list,set,map

作者: 指下光年 | 来源:发表于2021-05-21 00:26 被阅读0次

    java集合框架


    设计集合框架目标


    • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
    • 该框架允许不同类型的集合,以类似的工作方式,具有高度的互操作性。
    • 对一个集合的扩展和适应必须是简单的。

    集合的特点以及使用场景

    1、list:(元素有放入顺序,元素可重复)可以迭代也可以直接根据下标获取元素。list接口有两个常用子类,一个是arraylist,一个是linkedList。

    • ArrayList : 基于数组实现的非线程安全的集合。查询元素快,插入,删除中间元素慢。
    • LinkedList : 基于链表实现的非线程安全的集合。查询元素慢,插入,删除中间元素快。

    2、set:(元素无放入顺序,元素不可重复,重复元素会覆盖掉),只能用迭代获取元素。不能直接遍历集合获取。set接口下的常用子类说明;

    • SortedSet:此接口主要用于排序操作,即实现此接口的子类都属于排序的子类。
    • TreeSet:TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。
    • HashSet: HashSet是Set接口的典型实现,HashSet使用HASH算法来存储集合中的元素,因此具有良好的存取和查找性能。当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据该HashCode值决定该对象在HashSet中的存储位置。值得主要的是,HashSet集合判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法的返回值相等。
      3、map: map的主要特点是键值对的形式,一一对应,且一个key只对应1个value。其常用的map实现类主要有HashMap、HashTable、TreeMap、ConcurrentHashMap、LinkedHashMap、weakHashMap等等。其最常使用的有:
    • HashMap使用位桶和链表实现(最近的jdk1.8改用红黑树存储而非链表),它是线程不安全的Map,方法上都没有synchronize关键字修饰,但实现效率较快。
    • hashTable是线程安全的一个map实现类,它实现线程安全的方法是在各个方法上添加了synchronize关键字。但实现效率较慢。
    • ConcurrentHashMap,这个map实现类是在jdk1.5中加入的,其在jdk1.6/1.7中的主要实现原理是segment段锁,它不再使用和HashTable一样的synchronize一样的关键字对整个方法进行枷锁,而是转而利用segment段落锁来对其进行加锁,以保证Map的多线程安全。 其实可以理解为,一个ConcurrentHashMap是由多个HashTable组成,所以它允许获取不用段锁的线程同时持有该资源,segment有多少个,理论上就可以同时有多少个线程来持有它这个资源。他吸收了hashmap与hashtable二者的优点。

    2243690-9cd9c896e0d512ed.gif
    序号 接口 描述
    1 Collection 接口 Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。Collection 接口存储一组不唯一,无序的对象。
    2 List 接口 List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。List 接口存储一组不唯一,有序(插入顺序)的对象。
    3 Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。
    4 SortedSet 继承于Set保存有序的集合。
    5 Map Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
    6 Map.Entry 描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
    7 SortedMap 继承于 Map,使 Key 保持在升序排列。
    8 Enumeration 这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

    相关文章

      网友评论

          本文标题:java集合区别,集合框架,list,set,map

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