zoukankan      html  css  js  c++  java
  • Map List Set的区别

    Map List Map的主要区别如下:

      set List 是实现了Collection接口的子接口;Map本身就是一个接口;

      list数据存放时有序的,允许有重复元素;set数据存放时无序的,不允许有重复数据;map是以键值对的形式存放,存放是无序的,key值不允许有重复的,value值可以有重复的;

      list里面可以有任意的null值;set数据只允许有一个null值,如果多个数据都是null,那么只存在一个;map的key值只能有一个null值,value值可以有任意数量的null值;

    实现类(只说几个平时在用的)

      list:ArrayList,LinkedList

      set:HashSet,TreeSet

      Map:HashMap,TreeMap

    ArrayList和LinkedList的区别

      ArrayList底层为数组结构,数据存在内存中的地址是连续的,所以查询效率高,直接用数组下标就可以得到数据,而插入,删除要移动操作位置前后的元素。

      LinkedList底层为链表结构,数据存在内存中的地址不是连续的,查询的时候需要通过指针一个一个去查找,效率没有ArrayList高,但是插入,删除操作的时候,只需要改变指针的指向即可,不需要移动操作位置前后元素。

     ArrayList费空间的地方就是真实的数组长度要大于实际存储的元素的长度,为了方便添加数据;而LinkedList费空间的地方是一个位置要存本身的数据还有存指向前后的指针;

    HashMap和HashTable的区别

      HashMap不是线程安全的,HashTable是线程安全的,内部的方法都是用synchronized修饰的,所以HashMap效率要比HashTable高;

      HashMap允许键值为null,HashTable不允许,只要有为null就会报空指针;

    HashSet 和TreeSet的区别

    HashSet 
    无序(存入和取出的顺序不同),不重复,无索引
    底层是哈希表结构,也称散列表结构,查找和删除快,添加慢
    像HashSet中存储自定义对象需要重写hashCode()和equals()方法

    TreeSet
    可以对set集合中的元素进行排序,默认按照asic码表的自然顺序排序
    之所以treeset能排序是因为底层是二叉树,数据越多越慢,TreeSet是依靠TreeMap来实现的
    像TreeSet中存储自定义对象需要实现comparable接口

  • 相关阅读:
    Google Wave 的架构
    JSR 299(Java EE 平台的上下文与依赖注入)最终建议草案
    新书上架:《Java SE 实践教程》
    Ubuntu 9.10 将采用 GRUB 2
    NetBeans 时事通讯(刊号 # 59 Jun 09, 2009)
    Ubuntu 9.10 将采用 GRUB 2
    你可能不知道Windows系统下有一个UNIX子系统
    Seam 2.1.2
    C/C++内存泄漏及检测 吴秦 博客园
    C Socket Programming for Linux with a Server and Client Example Code
  • 原文地址:https://www.cnblogs.com/yuanxls/p/11798593.html
Copyright © 2011-2022 走看看