zoukankan      html  css  js  c++  java
  • 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 有序 


  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/riskyer/p/3292218.html
Copyright © 2011-2022 走看看