Collection集合和Map集合详细解释

 集合
 Collection(单列集合)
  List(有序,可重复)
        ArrayList
                        底层数据结构是数组,查询快,增删慢
                        线程不安全,效率高 
        Vector
                        底层数据结构是数组,查询快,增删慢
                        线程安全,效率低
        LinkedList
                        底层数据结构是链表,查询慢,增删快
                        线程不安全,效率高
     Set(无序,唯一) 
        HashSet
                      底层数据结构是哈希表
                      哈希表依赖于两个方法:hashCode()方法和equals()方法
                      执行顺序:
                              首先判断hashCode()值是否相同
                                      是:继续执行equals(),看起返回值
                                      是true:说明元素重复,不添加
                                      是false:就直接添加到集合
                                      不是:就直接添加到集合
                                      最终自动生成:hashCode()equals()即可
       LinkedHashSet
	             底层数据结构由哈希表和,链表组成
	             链表保证元素有序
	             由哈希表元素唯一                               
        TreeSet
		          底层数据是红黑树(一种自平衡的二叉树)
		          如何保证元素唯一的呢?
		                   根据比较的返回值是否为零来决定
		          如何保证元素的排序呢?
				     两种方法
					       自然排序(元素具备比较性)
					              让元素所属的类实现Comparable接口
					       比较器排序 (集合具有比较性)
					            让集合接受一个Comparator的实现类对象
 Map(双列集合)
        A: Map集合的数据接口仅仅针对键有效,与值无关
        B:存储的是键值对形式的元素,键唯一,值可重复
     HashMap  线程不安全,效率低
		          底层数据结构是哈希表
		                      哈希表依赖于两个方法:hashCode()方法和equals()方法
		                      执行顺序:
		                              首先判断hashCode()值是否相同
		                                      是:继续执行equals(),看起返回值
		                                      是true:说明元素重复,不添加
		                                      是false:就直接添加到集合
		                                      不是:就直接添加到集合
		                                      最终自动生成:hashCode()equals()即可
           LinkedHashMap
				   底层数据结构由哈希表和,链表组成
				   链表保证元素有序
				   由哈希表元素唯一                         
           Hashtable 线程安全,效率低
			            底层数据结构是哈希表
					                    哈希表依赖于两个方法:hashCode()方法和equals()方法
					                    执行顺序:
					                             首先判断hashCode()值是否相同
					                                   是:继续执行equals(),看起返回值
					                                   是true:说明元素重复,不添加
					                                   是false:就直接添加到集合
					                                   不是:就直接添加到集合
					                                   最终自动生成:hashCode()equals()即可
     TreeMap
		 底层数据是红黑树(一种自平衡的二叉树)
				          如何保证元素唯一的呢?
				                   根据比较的返回值是否为零来决定
				          如何保证元素的排序呢?
						     两种方法
							       自然排序(元素具备比较性)
							              让元素所属的类实现Comparable接口
							       比较器排序 (集合具有比较性)
							            让集合接受一个Comparator的实现类对象
  
 如何选择使用哪一个集合
   看需求
           是否是键值对像形式
           是:Map
                    键是否需要排序
		                    是:TreeMap
		                    不是:HashMap
		                    不知道就使用HashMap
           不是: Collection
                                元素是否唯一
			                    是:Set
			                  元素是否需要排序
					                  是:TerrSet
					                  不是:HashMap
			                  不知道就使用HashMap
			                    不是:List 
                         是否需要安全
                          是:
                  Vector(其实我们也不是用它,后面我们讲解多线程以后,我们再回顾)        	
                         不是:ArrayList或者LinkedList
		                         增删多:LinkedList
		                         查询多;ArrayList
                         不知道,就使用ArratList
 
 集合的常见方法及遍历方式
 Collection
			 add()
			 remove()
			 contains()判断指定元素是否再集合中
			 iterator()迭代器
			 size()
			 
                        遍历
                                 增强for
                                 迭代器
              |---List
              	    get()
              	    遍历:
              	          普通for
              |---Set  
Map
    put()
    remove
    comtainsKey(),containsValue()
    KeySet()
    get()
    value()
    entrySet()
    size() 
 
 遍历:
     键找值
     根据键值对对像分别找键找值
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unknown To Known

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值