Java第二次总结

博客主要围绕信息技术领域的两个问题展开,一是询问List、Set、Map 3个接口在存取元素时的特点,二是泛型的优点。这些内容与数据结构和程序设计相关。
  1. 请简述List、Set、Map 3个接口存取元素时各有什么特点

     List特点:
     ArrayList
     	数组实现,查找快、增删慢,由于是数组实现,在增加和删除的时候会牵扯数组扩容以及拷贝元素,
     	所以慢。数组是可以直接按索引查找,所以在查找的时候较为快
     LinkedList
     	链表实现,增删块、查找慢
     	由于链表实现,增加时候只要让前一个元素记住自己就可以,删除时候让前一个元素记住后一个元素,
     	后一个元素记录前一个元素这样的增删效率比较高,但查询时需要一个一个的遍历,所以效率较低
     Vector
     	是基于数组实现,线程同步的遗留集合类,和ArrayList原理相同,但线程安全,效率低
    
     Set特点:
     HashSet
     	HashSet是基于哈希表的Set集合
     		1. 无序存储不可重复
     		2. 需要使用hashCode算法计算元素的hash值
     		3. 基于哈希表做实现
     		4. 实现了Set接口
     	HashSet集合存储步骤:
     		1. 使用哈希算法计算元素对应的哈希值,使用此哈希值作为地址存储
     		2. 判断此哈希值对应的位置上是否已经存有元素
     		3. 若没有就将元素存储到该位置上
     		4. 若有则使用equals方法判断两个对象是否相等,相等就不存储,不相等则与上一个元素存在一起
     		5. 需要重写equals和hashCode方法
     LinkedHashSet
     	是基于双向链表和哈希表,继承自HashSet的Set集合
     	特点:有序,元素不可重复
     TreeSet
     	是基于红黑树,实现了Set集合,具有排序功能的Set集合
     
     Map特点:
     HashMap
     	基于哈希表实现的,线程不安全的Map容器
     	特点:
     		1. 基于哈希表实现
     		2. Key不允许重复,值可重复
     		3. 底层是数据+链表结构
     		4. 允许null键和null值
     		5. 线程不安全
     LinkedHashMap
     	继承自HashMap,基于双向链表存储的有序的Map容器
     Hashtable
     	基于散列表实现,线程安全的Map容器
     	特点	:
     		不允许null键和null值
     		线程安全
     TreeMap
     	基于红黑数实现,具有排序功能的Map容器
         特点:
             1.底层是红黑树
             2.不允许null值和null键
             3.针对键排序
             4.线程不安全
    
  2. 请简述泛型的优点

     1. 将运行期间的问题提到了编译期间
     2. 避免了强制类型转换
     3. 优化了程序设计,解决了黄色警告线
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值