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());  
            }  
           
    }

}


输出结果:

原文地址:https://www.cnblogs.com/tian-chen/p/5039575.html