• List,Set,Map用法以及区别


    以前写过这个知识点,如今有点忘却了,现在重写拾起来,因为这个问题在面试出现的机率太高了,不得不整理出来。

    类的来源如图: 

          Collection 

    ├List 

    │├LinkedList 

    │├ArrayList 

    │└Vector 

    │ └Stack 

    └Set 

    Map 

    ├Hashtable 

    ├HashMap 

    └WeakHashMap


    具体分析:

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collection的"子接口",如:List和Set。 

    注意:Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射。

    List特点:元素有放入顺序,元素可重复 

    Map特点:元素按键值对存储,无放入顺序 

    Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) 

    List接口有三个实现类:LinkedList,ArrayList,Vector 

    LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢 

    ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 

    Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet 

    SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现) 

    Query接口有一个实现类:LinkList 

    Map接口有三个实现类:HashMap,HashTable,LinkeHashMap 

      HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null 

    SortedMap有一个实现类:TreeMap 

    其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对 

    set 一般无序不重复.map kv 结构 list 有序 


  • 相关阅读:
    dremio 链接starrocks 的方法
    datafeedbackloop
    Castled 源码解析 connector 模块connector以及poller说明
    基于极光推送实现消息传输(PHP版)
    MAC下MySQL初始密码忘记怎么办
    【建议收藏】这些PHP考点知识你是否还记得?
    基于Swoole 解决百万级全站消息推送问题
    这些PHP基础知识一定要牢记
    送给奋斗在路上的年轻人一句话
    公司想撤销解除劳动合同决定,劳动者不同意,公司要支付经济补偿吗?
  • 原文地址:https://www.cnblogs.com/riskyer/p/3292218.html
Copyright © 2020-2023  润新知