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 kv 结构 list 有序 

就个人而言.list 用的比较多. 其次map  最后set 至于什么情况下使用什么集合.看情况了. 也不好说.也没那么绝对. 
看了下面的这个就更容易明白了 
写一段代码,遍历一个List中的元素 

List、Map、Set三个接口,存取元素时,各有什么特点? 

  1. import java.util.*;  
  2.   
  3. public class Test  
  4. {  
  5. public static void main(String [] arge)  
  6. {  
  7.   
  8. List list = new ArrayList();  
  9. list.add(0"a");  
  10. list.add(1"b");  
  11. list.add(2"c");  
  12. list.add(3"d");  
  13.   
  14. while(Iterator it = list.iterator();it.hasNext())  
  15. {  
  16.    Object element = it.next();  
  17.    System.out.println (element);  
  18. }  
  19. }  
  20. }  
  21. List、Map、Set  
  22. List 通过下标来存取 和值来存取  
  23. Map 键值对应来存取   
  24. set 存取元素是无序的  
  25.   
  26. --------------------------------------------------------------------  
  27.   
  28. package com.operation;  
  29.   
  30. import java.util.ArrayList;  
  31. import java.util.HashSet;  
  32. import java.util.Iterator;  
  33. import java.util.List;  
  34. import java.util.Set;  
  35. import java.util.TreeSet;  
  36.   
  37. public class User {  
  38.   
  39. private Integer userId;  
  40.   
  41. private String userName;  
  42.   
  43. private String address;  
  44.   
  45. public User(int userId, String userName, String address) {  
  46.    this.userId = userId;  
  47.    this.userName = userName;  
  48.    this.address = address;  
  49. }  
  50.   
  51.   
  52. public String getAddress() {  
  53.    return address;  
  54. }  
  55.   
  56.   
  57. public void setAddress(String address) {  
  58.    this.address = address;  
  59. }  
  60.   
  61.   
  62. public Integer getUserId() {  
  63.    return userId;  
  64. }  
  65.   
  66.   
  67. public void setUserId(Integer userId) {  
  68.    this.userId = userId;  
  69. }  
  70.   
  71.   
  72. public String getUserName() {  
  73.    return userName;  
  74. }  
  75.   
  76.   
  77. public void setUserName(String userName) {  
  78.    this.userName = userName;  
  79. }  
  80.   
  81.   
  82. public static void main(String[] args) {  
  83. //   Map<Integer, User> map = new TreeMap<Integer, User>();  
  84. //   map.put(1, new User(1,"李伟","beijing"));  
  85. //   map.put(2, new User(2,"王文军","beijing"));  
  86. //    
  87. //   map.put(4, new User(2,"abc","beijing"));  
  88. //   map.put(5, new User(2,"abc","beijing"));  
  89. //    
  90. //    
  91. //    
  92. //   Set<Integer> keys = map.keySet();  
  93. //    
  94. ////   Iterator<Integer> it = keys.iterator();  
  95. ////   while (it.hasNext()) {  
  96. ////    Integer key = it.next();  
  97. ////    User user = map.get(key);  
  98. ////    System.out.println("key = " + key + "\t" + "value = " + user.getUserName());  
  99. ////   }  
  100. //    
  101. //   for (Integer key : keys) {  
  102. //    User user1 = map.get(key);  
  103. //    System.out.println("key = " + key + "\t" + "value = " + user1.getUserName());  
  104. //   }  
  105.     
  106.   
  107.     
  108.    Set<String> set = new HashSet<String>();  
  109.    set.add("a");  
  110.    set.add("b");  
  111.    set.add("c");  
  112.    set.add("d");  
  113.    set.add("d");  
  114.    set.add("d");  
  115.    set.add("d");  
  116.    set.add("uuu");  
  117.    set.add("e");  
  118.     
  119.     
  120.    Iterator<String> it = set.iterator();  
  121.    while (it.hasNext()) {  
  122.     System.out.println(it.next());  
  123.    }  
  124.     
  125. }  
  126.   
  127. }  

阅读更多
上一篇转 java UDP发包
下一篇Tomcat Server.xml详解
想对作者说点什么? 我来说一句

list map set区别

2018年01月05日 20KB 下载

List,set,Map 的用法和区别

2012年07月31日 20KB 下载

java collections framework.ppt

2011年11月23日 877KB 下载

hibernate 中的 set map list 代码

2009年06月28日 34KB 下载

Collection、MapListSet、Iterator

2011年09月08日 31KB 下载

JAVA容器的概述,List,Map,Set

2008年11月01日 23KB 下载

没有更多推荐了,返回首页

关闭
关闭