java基础-泛型

て烟熏妆下的殇ゞ 提交于 2019-12-17 00:39:09

泛型

  • 泛型 : 要解决的是类型安全问题
  • 使用 : 在类型后面<泛型类型>

**1.Collection集合和Map集合的区别是什么? Map集合存放的对象有什么特点?
列出Map中常用的方法,包括对象的保存,提取等.
Collection 集合保存的是一个一个的对象
Map 集合保存的是一对一对的对象, 键值对映射对象, 键到值是单向一对一映射, 键必须唯一, 无序.
Map<K, V> map = ?; // K是键对象的类型, V是值对象的类型
V put(K key, V value); // put(1,”1”); put(1,”one”); 返回值是老值对象
V get(K key)
Set keySet();
Set<Entry<K, V>> entrySet()
V remove(K key);
2. 如何使用迭代器遍历一个集合? 写出代码. 并加上注释, 说明注意点.
// 获取到迭代器对象, 从集合对象的方法获取
Collection col = ?;
Iterator it = col.iterator();// 注意点1: 迭代器的使用必须马上进行.
while (it.hasNext()) {
T t = it.next();// 注意点2: next方法在循环中只能调用一次
// 访问t
}

  1. HashSet和TreeSet分别是用什么方式判断两个对象重复?
    HashSet 判断对象重复 : 先调用对象的hashCode方法, 再定位对象在数组中的下标, 如果下标处是空洞, 直接插入, 但是如果下标处非空, 遍历此链表, 依次和新插入的对象equals, 如果有为true的, 认为对象重复, 拒绝插入, 如果在链表中没有找到equals为true的就链到链表的末尾.
    TreeSet 判断对象重复 : 直接让新对象在插入树的时候和相关的结点比大小的时候决定, 如果和某结点的比较结果为0, 说明就重复了, 拒绝插入.
    4.方法: public T test() 方法的返回值是什么? 有什么改进的地方?
    返回值是T, 但是永远无法具体化, 只能返回Object类型.
    public T test(T t) 方法在调用时, 才能由实参来进一步确定T的类型.
  2. 写出ArrayList, LinkedList, HashSet, TreeSet 各自的优点和缺点.
    ArrayList : 基于数组实现
    缺点 : 非末端数据的插入速度最慢, 对内存要求高, 要求连续.
    优点 : 末端插入最快, 检索速度中快
    适用于不是频繁插入删除数据的场合.
    LinkedList : 基于链表实现
    缺点 : 检索速度最慢
    优点 : 对内存要求低, 插入,和删除操作很快
    适用于频繁地插入和删除数据的操作, 检索不太多(内存管理)
    TreeSet : 基于二叉搜索树(红黑树)
    缺点 : 插入,删除速度比较慢
    优点 : 对内存要求低, 检索速度非常快
    适用于数据的插入删除不频繁, 但是检索频繁的场景, 比如数据库索引
    HashSet : 基于数组, 使用哈希算法实现
    唯一的缺点 : 就是对内存要求高.**
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!