List Se 和Map的区别

List和Set都继承了接口Collection

List

List 有序可重复:
    ArrayList底层的数据结构是:索引数组,元组的区别靠数组自定义从0开始的数字下标来表示唯一性,所以元素可以重复,且按照数组下标排序;可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢.
    LinkedList:底层是链表,插入和删除速度快,访问速度慢
List集合的遍历方式:
        while-迭代器遍历
        for-迭代器遍历
        foreach-迭代遍历
        for-get遍历(只有List才可以,set,map都不可以)

Set

Set 无序不可重复:
    这个底层本质是一个HashMap(散列表),唯一不同的是,传入的元素是单个的,不是键值对,可以看做Map键的集合
    直接就用封装的形式把他封装到了 HashSet,HashMap,HashTable中,其中HashTable已经过时了
HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
SortedSet: SortedSet集合存储元素为什么可以自动排序?
因为被存储的元素(对象)实现了Compareable借口;
Oracle编写的TreeSet集合在添加元素的时候,会自动调用CompareTo方法完成比较.

Map

Map  Map没有继承于Collection接口
    Map 无序可重复:Map中保存的是键值对的对象,
从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。
Map集合中保存的是Key的唯一hash值,然后通过这个hash值找到这个键值对映射的对象,一个Key键可能对应一个Value值也可能对应多个Value值
HashMap  默认初始化容量是16,默认加载因子是0.75
HashTable 默认初始化容量是11,默认加载因子是0.75
java.util.Properties;也是由key和value组成,但是key和value的数据类型都是字符串类型,就是关联数组
往集合中添加元素的过程:
        1 先对Key调用hashCode方法,生成一个尽量唯一的hsah值
        2 然后调用equals()方法,用着这个hash值和Map(数组的下标进行比较),如果不同,就在数组添加一个新位,然后添加元素
        3 如果有相同的呢?在对Key的值调用equals方法对final key (FK)所在那个单向链表中的每一个Key进行比较,如果不相同,就添加到这个单向链表中.如果相同的话,就不添加.
        4 怎么添加的呢?首位添加,直接把数组中对应保存那个内存地址改成新加入的元素.新加入元素再保存之前那个Entry的内存地址

Map中常用方法:
增:
           Object put(Object key, Object value);
           向集合中添加键值对,也就是映射关系对象
       删
            void clear();
            清空Map;
        改
            数据类型转换
        查
            int size(); //获取Map中键值对的个数
            boolean isEmpty();//判断是否为空
            Object get(Object key);//通过key获取对应对象的值
            Collection values();//获取map集合中所有value对象的集合
            boolean containsKey(Object key);//判断集合中是否有这样的key键
            boolean containsValue(Object value)//判断集合中是否有这样的值
            Set keySet();//获取集合中所有的key,以集合方式返回
            Set entrySet;//返回此映射中包含的映射关系,以Set集合方式返回
            V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作
            )

Set和Map的关系:Set就相当于Map中键部分的集合

时间: 2024-10-29 19:07:08

List Se 和Map的区别的相关文章

Set,List,Map的区别

Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. 简单说下集合和数组的区别:(参考文章:<Thinking In Algorithm>03.数据结

hash与map的区别联系应用(转)

一,hashtable原理: 哈希表又名散列表,其主要目的是用于解决数据的快速定位问题.考虑如下一个场景. 一列键值对数据,存储在一个table中,如何通过数据的关键字快速查找相应值呢?不要告诉我一个个拿出来比较key啊,呵呵. 大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找.而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的. 具体如何做呢?大家是否有注意到前面说的话:“数组可以通过下标直接定位到相应的空间”

Java-list,set,map的区别

jdk中api的定义 Collection ├----List │ ├----LinkedList │ ├----ArrayList │ └----Vector │ └----Stack └----Set Map ├----Hashtable ├----HashMap ├ ├----LinkedHashMap └----WeakHashMap Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组

java中 HashMap和Hashtable,list、set和map 的区别

摘自: http://blog.chinaunix.net/uid-7374279-id-2057584.html HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许.HashMap把Hashtable的contains方法去掉了,改成contains

c++ list, vector, map, set 区别与用法比较

List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快.List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了.另外对于新添加的元素,Vector有一套算法,而List可以任意加入.Map,Se

hash_map和map的区别(转)

这里列几个常见问题,应该对你理解和使用hash_map比较有帮助. 4.1 hash_map和map的区别在哪里? 构造函数.hash_map需要hash函数,等于函数:map只需要比较函数(小于函数). 存储结构.hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现.因此其memory数据结构是不一样的. 4.2 什么时候需要用hash_map,什么时候需要用map? 总 体来说,hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级别;

浅谈Java中的Set、List、Map的区别(1)

就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. JAVA集合主要分为三种类型: Set(集) List(列表) Map(映射) Collection 接口 :Collection是最基本的集合接口,声明了适用

Java集合list,map,set区别及遍历

1.1 List.Set.Map基本区别 1 1.List,Set都是继承Collection接口,Map不是. 2 3 2.List:LinkedList.ArrayList.Vector 4 5 Set :HashSet.LinkedHashSet.TreeSet 6 7 Map:HashMap.HashTable.TreeMap 8 9 3.List元素是有序放入,可重复.(支持for循环,迭代器遍历) 10 11 Set元素无序放入且唯一,不可重复,若重复元素则会覆盖.(不支持for循环

Java集合:List、Set和Map的区别,ArrayList和LinkedList有何区别..........

一.数组和集合的区别: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型): 集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. 数组和集合相比唯一的有点就是速度快. 二.Java集合分类: 1.Collection(接口):派生的两个子接口:List和Set List(列表):有序.可重复元素,可以插入多个null元素.实现List接口的常用类有LinkedList