文章目录
前言
在刷算法题的时候,常常会遇到的一个问题是不知道怎么去表示问题结果,有些时候看别人的题解也会不知所云,特别是和数据结构紧密相关的题
——这就是典型的集合框架知识没有熟练掌握,使用Java内置的集合框架,能够更快的实现算法题解,深入理解泛型的设计目标,能够更好的实现代码重用…
一、集合框架与泛型概述
🌟集合框架:用于存储数据的一套容器,数据结构的默认实现
🌟泛型:用于帮助确定具体使用哪种类的占位符
1.1设计集合框架和泛型的目的
Java提供的核心集合框架类经过严格测试和统一规范的编写,是为了为程序开发者提供有效而常用的类,避免我们每次编写代码都去实现自己的集合类;
而泛型则是先不指定集合的内容(用一个泛型来指定),在使用时在指定集合里面包含什么类型的对象,能够提高重用性。(在未有泛型时,每次从集合中提取对象需要一次类型转换)
——即提供频繁使用的“工具”,提高开发效率,降低开发成本,使得代码易用易维护为目的。
1.2重点知识速览
集合框架速览
Java集合框架包含集合 (Collection接口的实现) 和图 (Map接口的实现)
二、常用框架快速入门
他们具体的形式可以参考如下图解
2.1Collection接口与基础方法
Collection作为集合接口契约——实现该接口这表示类作为一个集合使用,Map更复杂但是他使用了Collection,稍后再说。
Collection中使用了Iterator(迭代器),通过迭代器,可以依次历遍内容,以后再说。
Collection约定了如下方法(除此之外,还有更多):
方法名 | 功能 |
---|---|
add / addAll | 添加一个元素 / 添加一个Collection的所有内容 |
clear | 删除所有元素 |
size / isEmpty | 返回元素个数 / 判断是否为空(空为true) |
toArray | 转换成数组 (Object [ ] 这种) |
接口——只约定有什么方法,不具体实现。
2.2 List类的常规使用
List是Collection最常用的子接口,常用ArrayList实现;其属于有序元素的集合(按插入顺序),通过索引访问(像数组的下标一样),常用方法如下图:
List内部也是用一个数组保存内容,只不过通过内部方法实现了在数组存满时动态增长数组,长度加倍将原数组复制。
通过get访问历遍
for(int i=0;i<list.size();i++){
String cur=list