美文网首页
java基础之Collection

java基础之Collection

作者: watayouxiang | 来源:发表于2017-05-13 22:28 被阅读14次

    集合

    1. Collection

    • List: 可重复, 有序
      • 遍历:
        • 普通for循环, 增强for循环
        • 调用iterator()方法得到Iterator, 使用hasNext()和next()方法
      • ArrayList
        • 数组实现, 增删慢, 查找快
      • LinkedList
        • 链表实现, 增删快, 查找慢
      • Vector
        • 数组实现, 原理和ArrayList相同, 但线程安全
        • Vector集合可以使用Enumeration的hasMoreElements()和nextElement()方法
    • Set:不可重复, 无序
      • 遍历:
        • 增强for循环
        • 调用iterator()方法得到Iterator, 使用hasNext()和next()方法
      • HashSet
        • 使用哈希算法去重复, 效率高, 但元素无序
        • 使用Set集合都是需要去掉重复元素的。通过hashCode()和equal()方法来实现
        • 自定义类的对象存入HashSet必须重写hashCode()和equals()方法
        • LinkedHashSet:HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
      • TreeSet
        • 特点:TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
        • 排序方式:
          • 自然顺序(Comparable)
            • TreeSet类的add()方法中会把存入的对象提升为Comparable类型
            • 调用对象的compareTo()方法和集合中的对象比较
            • 根据compareTo()方法返回的结果进行存储
          • 比较器顺序(Comparator)
            • 创建TreeSet的时候可以制定 一个Comparator
            • 如果传入了Comparator的子类对象, 那么TreeSet就会按照比较器中的顺序排序
            • add()方法内部会自动调用Comparator接口中compare()方法排序
          • 两种方式的区别:
            • TreeSet构造函数什么都不传, 默认按照类中Comparable的顺序(没有就报错ClassCastException)
            • TreeSet如果传入Comparator, 就优先按照Comparator

    2. Map

    • 迭代Map集合:
      • keySet():
        • 先调用keySet()方法从Map集合中获取所有Key组成的一个Set集合
        • 迭代Set集合可以得到每一个Key
        • 然后再调用get()方法通过Key获取每一个Value
      • entrySet():
        • 先调用entrySet()方法从Map集合中获取所有Entry(键值对)组成的一个Set集合
        • 迭代Set集合可以得到每一个Entry
        • 然后再调用getKey()和getValue()方法得到每一个Key和每一个Value
    • HashMap
      • 使用哈希算法对键去重复, 效率高, 但无序
      • hashCode()和equal()方法来去重
      • LinkedHashMap
        • HashMap的子类, 算法相同, 但保留了存储的顺序
    • TreeMap:
      • 使用二叉树算法排序, 可以自定义顺序
      • 比较的方式和TreeSet指定的方式相同, Comparable和Comparator
    • HashTable:
      • 线程安全, 效率略低, 不允许null键和null值
      • 使用哈希算法去重复, 并且保留存储顺序

    3. 哈希算法 & 二叉树算法

    • 哈希算法(hashCode,equals)
    • 会用二叉树算法(Comparable,Comparator)

    4. 集合的迭代

    • Collection
      • Iteraotr: 通过iterator()方法得到迭代器, 调用hasNext()和next()方法进行迭代
      • ForEach: for (类型 变量名 : 容器) { 循环体 }
    • Map
      • keySet(): 得到所有的键组成的Set, 遍历Set得到每一个键, 然后再分别获取值
      • entrySet(): 得到所有的Entry组成的Set, 遍历Set得到每一个Entry, 再分别getKey()和getValue()
    • Vector
      • Iterator
      • ForEach
      • for
      • Enumeration: 类似Iterator, 通过elements()方法得到Enumeration, 调用hasMoreElements()和nextElement()方法进行迭代

    相关文章

      网友评论

          本文标题:java基础之Collection

          本文链接:https://www.haomeiwen.com/subject/vadfxxtx.html