Java # Java容器

一、概览

Collection


  • Set      
    • TreeSet:
      • 无序,不可重复,自动排序;
      • 存放在TreeSet中相当于存放到TreeMap的key部分
    • HashSet:
      • 无序,不可重复,支持快速查找;
      • 存放在HashSet中相当于存放到HashMap中的key部分
    • LinkedHashSet:基于双向链表实现,具有HashSet的查找效率
  • List
    • ArrayList:
      • 基于动态数组实现,支持随机访问
      • 增删元素通过移动元素实现,效率较低
    • Vector:
      • 和ArrayList类似
      • 线程安全,但效率较低,现在大多不用
    • LinkedList:
      • 基于双向链表实现,增删元素效率高,但查询效率低(每次都要从头结点开始)
      • LinkedList还可以用作栈、队列和双向队列
  • Queue:
    • LinkedList:可以用它来实现双向队列
    • PriorityQueue:基于堆结构实现,可以用它来实现优先队列

Map

  • TreeMap:基于红黑树实现,会根据key自动排序
  • HashMap:基于哈希表实现
  • HashTable:
    • 和HashMap类似
    • 线程安全。但他是遗留类,现在大多不用;而是使用ConcurrentHashMap来支持线程安全
  • LinkedHashMap:
    • 使用双向链表来维护元素的顺序
    • 顺序为插入顺序或者最近最少使用(LRU)顺序

二、容器中的设计模式

  • 迭代器模式:Collection继承了Iterable接口,其中的iterator()方法能够产生一个Iterator对象
  • 适配器模式:java.util.Arrays#asList()可以把数组类型转换为List类型

你可能感兴趣的:(java,开发语言,八股文)