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

    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三个接口,存取元素时,各有什么特点? 
    Java代码  收藏代码
    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 + " " + "value = " + user.getUserName());  
    99. ////   }  
    100. //    
    101. //   for (Integer key : keys) {  
    102. //    User user1 = map.get(key);  
    103. //    System.out.println("key = " + key + " " + "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. }  
  • 相关阅读:
    1105 Spiral Matrix
    Spring Boot 单元测试
    第一个 Spring Boot 应用程序
    Spring Boot 优缺点
    Spring Boot 简介
    第一个 Spring 应用程序
    Spring 体系结构
    Spring 与 IoC
    Spring 的特点
    Spring 简介
  • 原文地址:https://www.cnblogs.com/zszitman/p/4624133.html
Copyright © 2011-2022 走看看