zoukankan      html  css  js  c++  java
  • List,Set,Map用法以及区别

    List,Set,Map是否继承自Collection接口?

    答: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 键值对 结构 list 有序

    package com.mymemory.test;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    
    public class Test2 {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            List list = new ArrayList();  
            list.add(0, "a");  
            list.add(1, "b");  
            list.add(2, "c");  
            list.add(3, "d");  
            Iterator itlist = list.iterator();
            System.out.println("----------List 有序 -------");
            while(itlist.hasNext())  
            {  
               Object element = itlist.next();  
               System.out.println (element);  
            }  
            
            System.out.println("----------set无序不重复-------");
            Set<String> set = new HashSet<String>();  
               set.add("a");  
               set.add("b");  
               set.add("c");  
               set.add("d");  
               set.add("d");  
               set.add("d");  
               set.add("d");  
               set.add("uuu");  
               set.add("e");  
                
                
               Iterator<String> it2 = set.iterator();  
               while (it2.hasNext()) {  
                System.out.println(it2.next());  
               }  
            
               System.out.println("----------Map以键值对形式显示-------");
               
               System.out.println("------HashMap无序输出------");  
                HashMap hsMap=new HashMap();  
                hsMap.put("3", "HashMapValue3");  
                hsMap.put("1", "HashMapValue1");  
                hsMap.put("2", "HashMapValue2");  
                hsMap.put("b", "HashMapValueB");  
                hsMap.put("a", "HashMapValueA"); 
                hsMap.put("a", "HashMapValueC");
                hsMap.put("a", "HashMapValueD");
                Iterator it = hsMap.entrySet().iterator();  
                while (it.hasNext()) {  
                Map.Entry e = (Map.Entry) it.next();  
                System.out.println("Key: " + e.getKey() + "--Value: "  
                + e.getValue());  
                }  
               
        }
    
    }


    输出结果:

  • 相关阅读:
    设置java.library.path的值(Mac/Linux/Windows)
    英特尔老款CPU支持虚拟化对照表(转)
    长城小主机GW1等型号进BIOS的设置方法
    Mac 10.12允许任何来源
    DDos与CC攻击的简单个人理解
    Mac 10.12下iTerm2使用lrzsz上传下载文件
    Mac 10.12连接iSCSI硬盘软件iSCSI Initiator X
    华为S5300系列交换机V100R005SPH021升级补丁
    华为S5300系列交换机V100R005SPH020升级补丁
    华为S5300系列交换机V100R006SPH019升级补丁
  • 原文地址:https://www.cnblogs.com/tian-chen/p/5039575.html
Copyright © 2011-2022 走看看