最全集合:父类;概念;作用;区别,从基础深挖,重点详细讲解。一篇包含所有记忆重点~(理解面试专用)

4 篇文章 0 订阅
1 篇文章 0 订阅

集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。

  1. Collection:Collection 是集合 List、Set、Queue 的最基本的接口。
  2. Iterator:迭代器,可以通过迭代器遍历集合中的数据
  3. Map:是映射表的基础接口

关系图:
在这里插入图片描述
集合框架:
在这里插入图片描述
Arrays工具类常用方法讲解

#################List##################################################
ArrayList详解,总结最关注的重点
(ArrayList详细讲解和LinedList详细讲解)LinkedList和 ArrayList的详细讲解
都不是线程安全的。如果有需要用Collections.synchronizedList方法。

Vector 详细讲解

queue的java容易理解版本
特性:先进先出。
queue的常见用法详解

#################List##################################################

#################Set##################################################

(HashSet和TreeSte的详细讲解)HashSet和TreeSet的区别

HashSet扩容机制
根据质数扩容:在时间和空间上的浪费,远大于你的想象。

(LinkedHashSet讲解)java集合类Set集合的常用实现类

#################Set##################################################

#################Map##################################################
1.HashMap详细讲解

HashMap详细讲解
特点:
你需要完全的线程安全的时候使用Hashtable,而如果你使用Java 5或以上的话,请使用ConcurrentHashMap

2.HashTable详细讲解(并发性不如concurrenthashmap;效率不如hashmap)
和hashmap相比特点:
1.继承的父类不同(已经废弃类dictionary);
2.不允许有null的键;
3.线程安全

3.concurrenthashmap详细讲解
特点:ConcurrentHashMap线程安全并且提高性能原因就在于:对map中的读是并发的,无需加锁;只有在put、remove操作时才加锁,而加锁仅是对需要操作的segment加锁,不会影响其他segment的读写,由此,不同的segment之间可以并发使用,极大地提高了性能。(ConcurrentHashMap的并发度就是segment的大小,默认为16,这意味着最多同时可以有16条线程操作ConcurrentHashMap,这也是ConcurrentHashMap对Hashtable的最大优势)
它为什么是线程安全的?内部类Segment继承了ReentrantLock重入锁
#################Map##################################################

总结:

集合类型那么多,什么时候该用List, Set, Map?

*总结
如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是Java面向对象编程中抽象和多态思维的体现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值