集合

集合框架
一、 集合
集合是一种数据存储容器,其容量是可变的,且自己维护,具体 来说它是某种数据结构如(列表,链表,树,队列,栈…),数 据结构与编程语言无关,但可以通过不同的计算机语言实现。
为了简化开发,Java语言已经实现了一些数据结构,如ArrayList ,LinkedList,HashMap…,可供开发者直接使用。
二、 集合的框架体系
在这里插入图片描述
三、 集合简图
Collection
List Set
ArrayList LinkedList Vector HashSet SortedSet
TreeSet

Collection:该体系结构的根接口,代表一组对象, 称为“集合”。
List:有序、有下标、元素可重复
Set:无序、无下标、元素不能重复
四、 集合与数组的区别
Ø 数组是java内置的数据类 型效率非常高,可作为集 合实现底层支撑。
Ø 数组只是单一的按顺序存 取数据的结构。
Ø 数组是静态的,固定长度 一旦分配,不可改变。
Ø 数组在使用只提供下标对 其元素访问,以及长度访 问,使用上不方便。

VS
Ø 集合是通过各种算法实现 的类型。
Ø 集合可以实现丰富的存储 结构。
Ø 集合长度可以根据实际存 储的量来动态调整。
Ø 集合提供了丰富的API来 管理元素。
五、 Collection接口
它是集合层次结构中的根接口。Collection 表示一组对象,这些 对象也称为 collection 的元素。一些 collection 允许有重复的 元素,而另一些则不允许。一些 collection 是有序的,而另一 些则是无序的。
六、 CollectionAPI
Collection接口声明了集合操作的基本方法,这些抽象方法由具 体集合类实现。

七、 List 简介
List是一个接口,该接口扩展了Collection接口,List集合是有序 可重复的。List接口的实现类满足有序可重复的特性。同时List接 口还添加了一些新的方法,这些方法都与都与顺序相关。
八、ArrayList 介绍
ArrayList是List接口的实现类,它实现了List接口中的抽象方法 其底层维护了一个数组。简单来说,ArrayList是依靠数组实现的。
通过以下方式可以创建ArrayList实例。
ArrayList()
构造一个初始容量为 10 的空列表。
ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。
ArrayList(Collection<? extends E> c)
构造一个包含指定 collection 的元素的列表 。

// clear() 清空
// remove() 移除元素
// size() 获得元素的个数
// get(int index) 返回指定位置的元素
// indexof(Object o) 返回指定元素的下标
// set(int index,Object newObject) 设置指定位置的元素
// subList(int from,int end) 截取一段区间元素返回新的集合
// contains(Object o)是否包含某个元素
Object[] objs = names.toArray();
// Arrays.asList()方式创建的集合是不可变的
九、LinkedList
LinkedList是List接口的实现类,它也实现了List接口中的抽象方 法其底层依靠链表数据结构。LinkedList是基于链表实现。 通过以下方式可以创建LinkedList实例。
LinkedList()
构造一个空列表。
LinkedList(Collection<? extends E> c)
构造一个包含指定 collection 中的元素的列表。

十、Vector介绍
Vector是List接口的实现类,它实现了List接口中的抽象方法。其 实现方式和ArrayList类似,同时Vector是线程安全的。
通过以下方式可以创建Vector实例。
Vector() 构造一个空向量,使其内部数据数组的大小为 10
Vector(int initialCapacity) 使用指定的初始容量和等于零的容量增量构造一个空向量。 Vector(int initialCapacity, int capacityIncrement) 使用指定的初始容量和容量增量构造一个空的向量。
十一、Iterable与Iterator
Iterable:译为可迭代的,是一个接口,在集合体系中位于最 顶端,是集合类的超级接口,也就是说,只要是集合都是可迭代 的。该接口只用一个方法,用于返回一个迭代器。
Iterator iterator()
Iterator: 就是迭代器类型,该类型的实例就是一个迭代器。其 作用是用来遍历集合的。
十二、Iterator方法
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
E next() 返回迭代的下一个元素。
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素。
十三、Set简介
Set是一个接口,该接口扩展了Collection接口,Set集合是无序 不可重复的。Set接口的实现类满足无序不重复的特性。由于Set 是无序集合,所以不能根据下标访问元素。
十四、HashSet介绍
HashSet是Set接口的实现类,它实现了Set接口中的抽象方法其 底层维护了一个HashMap。简单来说,HashSet是依靠 HashMap实现的。 通过以下方式可以创建HashSet实例。
HashSet()
构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16, 加载因子是 0.75。
十五、Hash Set去除重复
1.覆盖equals()
2.覆盖hashCode()
十六、TreeSet介绍
TreeSet是一个Set接口子接口SortedSet的实现类,SortedSet 是可排序的接口,所以TreeSet的元素可以进行自然排序。
TreeSet()
构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。
TreeSet(Collection<? extends E> c) 构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自 然顺序进行排序。
TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。
十七、Comparator
强行对collection 进行整体排序。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序 上实现精确控制。
public interface Comparator {
int compare(T o1, T o2);
}
十八、Map 介绍
Map 是存储映射数据的集合接口,映射指的是键到值的关系。 简单来说,就是存储键(key)-值(value)对的集合。此接口代替 了Dictionary类(字典)。

十九、HashMap介绍
HashMap是Map接口的实现类,它实现了Map接口中的抽象方 法,HashMap底层依靠hash表(数组+链表实现),jdk8以后引入 了红黑树。 通过以下方式可以创建HashMap实例。
HashMap() 构造一个具有默认初始容量(16)和默认加载因子(0.75)的空 HashMap。
二十、HashMap 结构

二十一、HashMap与Hashtable
1. Hashtable出现比HashMap要早,Hashtable父类是Dictionary(基 本上不使用了),从jdk1.2开始实现了Map接口。
2.Hashtable 被设计为线程安全的,HashMap不保证线程安全。
3.Hashtable 不支持空键,HashMap支持。
4.Hashtable 和HashMap 底层实现基本一致(某些方法实现上有些差异, 作用类似比如,初始化容量,hash算法实现,扩容比例),都使用了hash 表,但是JDK8中,HashMap进行了改动,引入了红黑树。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值