12.集合

在这里插入图片描述

  1. 集合类又称为容器

  2. 集合的长度是可变的,数组的长度是不可变的

  3. 常用的集合有List、Set、Map

Collection

  1. List和Set都实现了Collection接口

  2. Collection接口不能直接使用,但该接口提供了添加、删除、管理数据的方法

  3. 方法

方法返回值描述
Add()Void将指定对象添加到集合中
Remove()void从集合中移除对象
Size()int获取集合大小
isEmpty()boolean判断集合是否为空
Iterator()Iterator获取该集合的迭代器,用于遍历所有元素

List

  1. list集合实现了Collection接口 拥有Collection接口的所有方法

  2. 额外有两个方法

    ① get(int index);

    ② set(int index,Object obj);

  3. List接口的实现类

    (1) ArrayList

    ① 可变数组保存对象

    ② 允许保存所有元素,包括null

    ③ 可以根据索引快速访问

    ④ 缺点是向指定索引位置进行插入和删除对象时速度较慢

    (2) Vector

    Vector 与 ArrayList 一样,也是通过数组实现的,不同的是它支持线程的同步

    (2) LinkedList

    ① 链表结构保存对象

    ② 插入、删除的效率较高

    ③ 对于随机访问的速度较慢

Set

  1. Set 注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素,值不能重

复。对象的相等性本质是对象 hashCode 值(java 是依据对象的内存地址计算出的此序号)判断

的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方

法。

  1. Set集合实现了Collection接口 拥有Collection接口的所有方法

  2. Set接口的实现类

    (1) HashSet

    ① 不保证迭代顺序(可能每次迭代的结构顺序都不同)

    ② 此类运行存入null元素

    ③ 元素的哈希值是通过元素的hashcode 方法来获取的

    ④ HashSet 首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals 方法 如果 equls 结果为 true ,HashSet 就视为同一个元素。如果 equals 为 false 就不是同一个元素。

    (2) TreeSet

    ① 遍历的顺序是按照自然顺序递增

    ② 也可以指定比较器进行递增排序

    ③ 要想知道存放顺序,被排序对象需要实现comparable接口

    ④ TreeSet新增的方法

方法名描述
First()
Last()
Comparator()
headSet()
SubSet()
tailSet()

Map

  1. map集合以key-value的方式进行值的存储

  2. map不能存放相同的key值

  3. map集合允许value为null,且没个数限制

  4. map集合常用方法

方法返回值描述
put(Object key,Object value)void给Map添加值
get(K key)Object通过key获取value
Containskey(Object key)boolean查找map集合中是否包含key映射
keySet()Set获取由key组成的Set集合
Values()Collection获取由value组成的Collection集合
  1. map集合的实现类

    (1) HashMap

    ① 建议使用HashMap实现类,因为HashMap集合的添加、删除效率更高

    ② 运行key和value为null,但是必须保证key的唯一性

    (2) ConcurrentHashMap

    ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些

    (3) HashTable

    Hashtable 是遗留类,很多映射的常用功能与 HashMap 类似,不同的是它承自 Dictionary 类,

    并且是线程安全的,任一时间只有一个线程能写 Hashtable,并发性不如 ConcurrentHashMap,

    因为 ConcurrentHashMap 引入了分段锁。Hashtable 不建议在新代码中使用,不需要线程安全

    的场合可以用 HashMap 替换,需要线程安全的场合可以用 ConcurrentHashMap 替换。

    (4) TreeMap

    ① 不仅实现了Map接口还实现了SortedMap接口,因此集合的映射关系具有一定的顺序

    ② 添加、删除的效率比不上HashMap

    ③ 不允许key为null

用 ConcurrentHashMap 替换。

(4) TreeMap

① 不仅实现了Map接口还实现了SortedMap接口,因此集合的映射关系具有一定的顺序

② 添加、删除的效率比不上HashMap

③ 不允许key为null

posted @   晓洋^  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示