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

  • 相关阅读:
    无参考数据集
    dropout层
    postgresql查询表的大小
    vue 消息订阅与发布
    echarts实现pie自定义标签
    elementUI 时间线居左显示
    css+div实现各种常见边框
    css实现中括号边框
    div中多行内容垂直居中显示
    vue 实现组件全屏展示及退出
  • 原文地址:https://www.cnblogs.com/mcmx/p/11341405.html
Copyright © 2011-2022 走看看