图解集合,一目了然!
Collection(单列集合) Map(双列集合) |--Collection(单列)
|--List(有序,可重复)
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
|--Set(可能无序,肯定唯一)
|--HashSet
底层数据结构是哈希表。
线程不安全,效率高。
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
|--TreeSet
底层数据结构是二叉树。
线程不安全,效率高。
怎么保证唯一性的呢?是根据返回是否是0。
怎么保证排序的呢?两种方式
自然排序(元素具备比较性)
实现Comparable接口
比较器排序(集合具备比较性)
实现Comparator接口|--Map(双列 底层结构是针对键有效,跟值无关)
|--HashMap
底层数据结构是哈希表。
线程不安全,效率高。允许null键和值
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
|--Hashtable
底层数据结构是哈希表。
线程安全,效率低。不允许null键和值
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()
顺序:
首先判断hashCode()值是否相同。
同:继续走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
|--TreeMap
底层数据结构是二叉树。
线程不安全,效率高。
怎么保证唯一性的呢?是根据返回是否是0。
怎么保证排序的呢?两种方式
自然排序(元素具备比较性)
实现Comparable接口
比较器排序(集合具备比较性)
实现Comparator接口
Collection( 接口)单列集合 List( 接口)有序,不唯一 Set( 接口)可能无序,肯定唯一 Vector( 类) ArrayList( 类) LinkecList( 类) HashSet(类) TreeSet(类)1、底层数据结构是数组,查询快,增删慢
2、线程安全,效率低(只有Vector是线程安全的)1、底层数据结构是数组,查询快,增删慢
2、线程不安全,效率高1、底层数据结构是链表,增删快,查询慢
2、线程不安全,效率高1、底层数据结构是哈希表
2、通过重写hashCode() 和equals() 保证唯一性
3、线程不安全,效率高
(如果元素相同不操作,所以不会覆盖) 1、底层数据结构是二叉树
2、通过判断compareTo或compare 方法的返回值是否为 0来判断是否重复
3、排序有两种方案:实现Comparable接口重写 compareTo方法实现Comparator接口重写 compare方法
4、线程不安全,效率高
(如果元素相同不操作,所以不会覆盖)
集合与映射的基础与应用
本文图解了集合和映射的基本概念及其在Java中的实现,包括ArrayList、LinkedList、HashSet、TreeSet、HashMap和Hashtable等常用数据结构的特性与使用场景。详细介绍了如何通过重写hashCode()和equals()方法来保证唯一性,并通过实现Comparable或Comparator接口来实现排序。文章还阐述了如何在实际编程中灵活选择合适的数据结构以提高效率。
861

被折叠的 条评论
为什么被折叠?



