Java中的集合类

超、凢脫俗 2022-07-19 00:20 245阅读 0赞

1. 集合类(容器类)

  • 保存数量不确定的数据,以及具有映射关系的数据(关联数组)
  • Set代表无序,不可重复的集合(Set集合无法记住添加元素的顺序,所以元素不能重复)
  • List代表有序,重复的集合
  • Map代表具有映射关系的集合(key-value对形式,key不可重复)
  • Queue代表一种队列集合
  • 集合保存对象的引用变量

2. Set

  • Set的三个实现类都是线程不安全的
  • HashSet:
  1. * 不能保证元素顺序排列,顺序可能与添加顺序不同
  2. * HashSet不是同步的
  3. * 集合元素值可以为null
  4. * 底层用数组实现,默认长度为16,容量超出后扩大为原来的2
  • LinkedHashSet
  1. * 元素顺序和添加顺序一致
  2. * 不允许集合元素重复
  • TreeSet
  1. * 根据元素的实际值大小自动按照升序进行排序
  2. * TreeSet中添加对象时会调用compareTo(Object obj)进行比较
  3. * TreeSet中应当存放同一个类的对象,否则会产生ClassCastException
  • EnumSet
  1. * 专为枚举类设计的集合类
  2. * 在内部以位向量的形式存储
  3. * 不允许加入null元素

3. List

  • List是有序,可重复的集合
  • ArrayList
  1. * 是基于数组实现的List类,封装了一个动态的允许再分配的Object\[\]数组
  2. * 初始长度为10
  3. * 添加元素超过该数组长度时会自动增加为原来的3/2倍+1
  4. * ArrayList是线程不安全的
  5. * 适合存储少量数据,查找快
  • LinkedList
  1. * LinkedList以链表的形式保存集合中的元素,在执行插入、删除时有较好的性能
  2. * LinkedList可以作为List集合、双端队列、栈使用
  • ListIterator相比于Iterator增加了向前迭代的功能
  • Iterator只能迭代List接口下的容器

4. Queue

  • PriorityQueue
  1. * 是比较标准的队列实现类
  2. * 按照队列元素的大小顺序进行保存
  3. * 不允许插入null元素
  • Deque代表双端队列,允许从两端操作队列的元素
  • ArrayDeque既可以作为栈使用(push(),pop()),也可以作为队列使用(offer(),poll())
  • ArrayList、ArrayDeque、Vector内部以数组的形式保存集合中的元素,在随机访问时性能最好

5. Map

  • Map用于存放具有映射关系的数据
  • Map中key,value都可以是任何引用类型的对象
  • key不可重复
  • key和value之间存在单向一对一关系
  • 放入重复的key时,新的value会覆盖原有的value,并返回别覆盖的value值
  • HashMap时线程不安全的
  • Properties类可以把Map对象和属性文件关联起来,从而将Map的key-value写入属性文件中或从文件中读取属性到Map中
  • TreeMap时红黑树结构,存储key-value时需要对key进行排序
  • EnumMap在内部以数组形式保存,根据key的自然顺序排序,不允许null作为key

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java集合性能比较

    在Java中,集合类是用于存储和操作一组对象的容器。根据它们的特性、使用场景和性能表现,主要的集合类有以下几种: 1. List:线性结构,允许插入和删除操作,但不保证元素的

    相关 Java集合

    1. 集合类(容器类) 保存数量不确定的数据,以及具有映射关系的数据(关联数组) Set代表无序,不可重复的集合(Set集合无法记住添加元素的顺序,所以元素不

    相关 java集合

    一、集合与数组 数组(可以存储基本数据类型)是用来存取对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。 集合(只能存储对象,对象类型可以