zoukankan      html  css  js  c++  java
  • Java面试系列07(集合)

    集合只能存放引用数据类型的数据。

    集合分类:

    集合的从属关系:

    两类集合Collection、Map

    Collection包括List、Set

    List包括:VectorArrayListLinkedList

    Set包括:HashSetTreeSetLinkedHashSet

    Map包括:HashMapTreeMapHashTable

    ArrayList和Vector的底层是相同的,Vector是线程安全的、ArrayList是线程不安全的。

    HashMap是线程不安全的、HashTable是线程安全的。(结构相同)

    HashSet的底层使用的是HashMap,且其Value都是同一个Object对象。

    Hashmap底层结构是一个数组链表式结构,

    第一层是一个长度为6的数组,数组的每个元素是一个链表。

    链表的节点是node(实现了entry的一个类。entry在map中被定义为内部接口)

    向hashmap里插入元素的过程

    首先第一步是计算K对象的Hashcode值,通过hashcode%数组长度取模运算,得到此hashcode值对应的数组下标。

    然后从第一个节点开始与K比较hashcode值,如果hashcode值相同再执行equeals方法。如果equals方法返回true,则对相应节点的valude进行覆盖,如果不为真则继续比较下一个节点,直到相同。如果最后都不相同则会在尾部插入此KV node。

    hashset中存入的值就是每一个node 的K。它的底层是hashmap,所以都是相同的,不同的也是在map的基础上又改了改。

    排序  TreeMap、TreeSet

     第一种方法在TreeMap的构造方法中传入Compartor接口的匿名对象。

    new  TreeMap(new Compartor<String>{ 实现compare<String>方法 })  

    第二种方法是使元素对象实现Comparable接口实现CompareTo方法

    这两个方法,都会返回整数,大于0的表示新插入的比旧的大,

    TreeMap是升序的。

    三种遍历list集合的方式

    iterator

    三个方法hasnext next remove

    高级for

    通过获取size来用for遍历。

    两种遍历set的方式

    keyset()+iterator

    keyset()+for

    三种遍历map

    map.entryset()+for

    keyset()+iterator

    keyset()+for

  • 相关阅读:
    能成大事儿的人,都具备这5个特质
    元气森林唐彬森:苦了10年我发现,发大财首先要会选
    反者道之动,亿万富翁查理芒格受用一生的逆向思维
    解决不了bug先放着,这里有40条提升编程技能小妙招
    理解maven命令package、install、deploy的联系与区别
    每日一则
    《穷查理年鉴》贪嗔痴 & 懒贪装(关于败坏)
    C++构造函数
    C++类的定义和封装
    C++访问控制限定符
  • 原文地址:https://www.cnblogs.com/mcmx/p/11341405.html
Copyright © 2011-2022 走看看