zoukankan      html  css  js  c++  java
  • Collection接口 map

    Collection接口
    -List接口
    -ArrayList:
    -Vector:
    -LinkedList:
    -Set接口
    -HashSet:
    -LinkedHashSet:
    -TreeSet:

    Map
    -HashMap
    -LinkedHashMap
    -TreeMap
    -Hashtable

    面试题:
    HashMap和Hashtable
    List,set,Map区别
    ArrayList,Vector,LinkedList存取元素性能和特点
    ArrayList,LinkedList
    Collection和Collections
    List,set,Map都继承Collection


    1.Set集合(理解)
    (1)Set集合的特点
    无序,唯一
    (2)HashSet集合(掌握)
    A:底层数据结构是哈希表(是一个元素为链表的数组)
    B:哈希表底层依赖两个方法:hashCode()和equals()
    执行顺序:
    首先比较哈希值是否相同
    相同:继续执行equals()方法
    返回true:元素重复了,不添加
    返回false:直接把元素添加到集合
    不同:就直接把元素添加到集合
    C:如何保证元素唯一性的呢?
    由hashCode()和equals()保证的
    D:开发的时候,代码非常的简单,自动生成即可。
    E:HashSet存储字符串并遍历
    F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)
    (3)TreeSet集合
    A:底层数据结构是红黑树(是一个自平衡的二叉树)
    B:保证元素的排序方式
    a:自然排序(元素具备比较性)
    让元素所属的类实现Comparable接口
    b:比较器排序(集合具备比较性)
    让集合构造方法接收Comparator的实现类对象


    2:Collection集合总结(掌握)
    Collection
    |--List 有序,可重复
    |--ArrayList
    底层数据结构是数组,查询快,增删慢。
    线程不安全,效率高
    |--Vector
    底层数据结构是数组,查询快,增删慢。
    线程安全,效率低
    |--LinkedList
    底层数据结构是链表,查询慢,增删快。
    线程不安全,效率高
    |--Set 无序,唯一
    |--HashSet
    底层数据结构是哈希表。
    如何保证元素唯一性的呢?
    依赖两个方法:hashCode()和equals()
    开发中自动生成这两个方法即可
    |--LinkedHashSet
    底层数据结构是链表和哈希表
    由链表保证元素有序
    由哈希表保证元素唯一
    |--TreeSet
    底层数据结构是红黑树。
    如何保证元素排序的呢?
    自然排序
    比较器排序
    如何保证元素唯一性的呢?
    根据比较的返回值是否是0来决定

    3:针对Collection集合我们到底使用谁呢?(掌握)
    唯一吗?
    是:Set
    排序吗?
    是:TreeSet
    否:HashSet
    如果你知道是Set,但是不知道是哪个Set,就用HashSet。

    否:List
    要安全吗?
    是:Vector
    否:ArrayList或者LinkedList
    查询多:ArrayList
    增删多:LinkedList
    如果你知道是List,但是不知道是哪个List,就用ArrayList。

    如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。

    如果你知道用集合,就用ArrayList。

    4:在集合中常见的数据结构(掌握)
    ArrayXxx:底层数据结构是数组,查询快,增删慢
    LinkedXxx:底层数据结构是链表,查询慢,增删快
    HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
    TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

    4:Map(掌握)
    (1)将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
    (2)Map和Collection的区别?
    A:Map 存储的是键值对形式的元素,键唯一,值可以重复。夫妻对
    B:Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素可重复。
    (3)Map接口功能概述(自己补齐)
    A:添加功能
    B:删除功能
    C:判断功能
    D:获取功能
    E:长度功能
    (4)Map集合的遍历
    A:键找值
    a:获取所有键的集合
    b:遍历键的集合,得到每一个键
    c:根据键到集合中去找值

    B:键值对对象找键和值
    a:获取所有的键值对对象的集合
    b:遍历键值对对象的集合,获取每一个键值对对象
    c:根据键值对对象去获取键和值



    5:Collections(理解)
    (1)是针对集合进行操作的工具类
    (2)面试题:Collection和Collections的区别
    A:Collection 是单列集合的顶层接口,有两个子接口List和Set
    B:Collections 是针对集合进行操作的工具类,可以对集合进行排序和查找等
    (3)常见的几个小方法:
    A:public static <T> void sort(List<T> list)
    B:public static void reverse(List<?> list) 自己去练习一下


    6.1:异常(理解)
    (1)程序出现的不正常的情况。
    (2)异常的体系
    Throwable
    |--Error 严重问题,我们不处理。
    |--Exception
    |--RuntimeException 运行期异常,我们需要修正代码
    |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
    (3)异常的处理:
    A:JVM的默认处理
    把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。
    B:自己处理
    a:try...catch...finally
    自己编写处理代码,后面的程序可以继续执行
    b:throws
    把自己处理不了的,在方法上声明,告诉调用者,这里有问题
    (4)面试题
    A:编译期异常和运行期异常的区别?
    编译期异常 必须要处理的,否则编译不通过
    运行期异常 可以不处理,也可以处理

    (5)finally关键字及其面试题
    A:finally用于释放资源,它的代码永远会执行。特殊情况:在执行到finally之前jvm退出了
    B:面试题
    a:final,finally,finalize的区别?

    C:异常处理的变形
    try...catch...finally
    try...catch...
    try...catch...catch...
    try...catch...catch...fianlly
    try...finally

  • 相关阅读:
    python---redis缓存页面前戏之剖析render源码
    python---redis的python使用
    python---redis中文操作与系统中文检测
    python---redis在windows安装以及测试
    python---基于memcache的自定义session类
    python---memcache使用操作
    python---memcache基本使用以及内部原理
    googlecast
    Android-L-Samples
    libsuperuser
  • 原文地址:https://www.cnblogs.com/hdj1073678089/p/7366257.html
Copyright © 2011-2022 走看看