ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **一、Collection集合** 在我们初学Java的时候,会学习`int`、`String`、`Array`等这些数据结构,但是在开发中这些数据结构并不能满足我们开发的需要,比如学过PHP弱数据类型语言的朋友就能知道有一种数据类型是这样的: ~~~php data = { "ZhangSan" => "张三", "LiSi" => "李四" } ~~~ 我们的`Array`数据类型并不能"包容"它,因为我们`Array`是由下标0开始的一个数组,我们是这样定义的: ~~~java String array [] = {"张三","李四"}; for(int i=0; i < array.length; i++){ System.out.println(array[i]); } ================================ 运行结果 ================================ 张三 李四 ~~~ 所以,我们在程序设计时需要一个能够类似`key => value`的数据类型,就需要用Collection集合,它帮我们定义了许多特殊的数据类型,我们可以把它称为集合框架。 >[success] 集合框架(Collection)可以不受我们申明时长度约束,我们申明时也无需告知长度 ## **二、Collection的分类** 集合容器主要用于保存对象,其主要分类为三种:`List` `Set` `Map`,其中根据上图可以看到`List`和`Set`的上级类为`Collection`,而`Map`则是单独出来的。 1. `List`是有序、可以重复的集合 * 常见的有`ArrayList`、`LinkedList`、`Vector`等,可以把它视为一个实现的接口类 2. `Set`是无序、不可重复 * 常见的有`HashSet`、`TreeSet`、`LinedHashSet`等,可以把它视为一个实现的接口类 3. `Map`是Key-Value的一个映射体 * 常见的有`HashMap`、`TreeMap`等,可以把它视为一个实现的接口类 :-: ![](https://img.kancloud.cn/e7/ab/e7ab3d934c8fa1d96d2c0778adc5ab30_1206x312.png) >[danger] Collection接口有两个主要的子类`List`和`Set`,`Map`不是Collection的子类,他本身是个顶级接口 `ArrayList`继承关系 ![](https://img.kancloud.cn/b1/0d/b10ddc19cbbaa2cab7b338d7b39b3c55_809x438.png) `HashMap`继承关系 ![](https://img.kancloud.cn/f6/87/f6873b6791d2a9bf7a08e4bfe0c174be_1062x640.png)