为了活动小家电- 集合框架——List、Set、Queue、Map(二)

62 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情

为了活动小家电,接着上篇搞!

Queue

image.png

特点

  • 具有先进先出结构
  • 进入时入队,退出时出队。

种类

  • PriorityQueue
    具有优先级的队列,赋予元素优先级并以最高顺序返回它们,在二叉树结构中实现

  • ArrayDeque
    两边都可以插入/删除的队列数据结构

Map

image.png

特点

  • 一组由 Key & Value 组成的数据
  • 不维护秩序
  • 密钥不允许重复
  • 值允许重复

2) 种类

  • HashMap
    Key & Value 随机存储的 Map(无序)
  • LinkedMap
    按放置顺序包含键和值的映射(有顺序)
  • TreeMap
    按键值排序的地图(无序)

HashMap

HashMap 是一个具有代表性的 Map 集合,它实现了 Map 接口。用作 HashMap 键的对象必须通过覆盖 hashCode() 和 equals() 方法来定义条件为相等对象。对于一个equal对象,即条件相同的key,hashCode()的返回值必须相同,equals()方法必须返回true。String 主要用作键类型,hashCode() 和 equals() 方法被重写,使得如果字符串相同,String 可以成为等价对象。

大多数情况下,使用无参数构造函数来创建 HashMap 对象。但是,如果要包含在 HashMap 中的数据数量很大,建议指定初始大小。

HashMap<String,String> map=new HashMap<String,String>();

TreeMap

TreeMap 是基于二叉树的 Map 集合。与TreeSet的区别在于它存储了一个MapEntry,其中存储了key和value。 
TreeMap 类在排序的同时存储键和值。排序顺序为数字 > 大写字母 > 小写字母 > 文字。因此,如果需要排序,使用TreeMap比使用HashMap更有优势。

TreeMap<String, String> treeMap = new TreeMap<String, String>();

List、Set、Map差异

1. List/Set差异

  • 由于List是一个有序的Collection,数据的放置顺序是有保证的,所以可以将特定的item作为Index来检索,但是在Set中,数据的放置顺序是没有保证的。
  • 列表允许重复,但集合不允许。

2. List/Map差异

  • 列表是有序的,地图是无序的
  • Map 存储 Key 和 Value 值。

3. Set/Map差异

  • Set 不允许重复数据,Map 不允许重复键和重复值。

总结

List 基本上按顺序存储数据并允许重复。

Map 不保证顺序,不允许键值重复,但允许值值重复。

Set 不保证顺序,不允许重复数据。