Java基础系列--08_集合1
---恢复内容开始---
集合当中有很多都是应用到泛型的技术,所以在讲集合之前,应该先将泛型的概念普及一下。
泛型:
(1)泛型是一种类型,但是这种类型是在编译或者调用方法时才确定。
(2)格式:
<数据类型> 如:collection<e>这里的e指的是任意类型,可以理解为object类型,因为object是所有类的根类
(3)好处:
a:把运行期间的转换异常给提前到了编译期间
b:优化了程序设计,不需要强制类型转换
c:在减少了代码量的同时还增强了程序的可拓展性
(4)泛型的演变
a:泛型类(尤其是在c++中有很多的模板类,其实就是java中的泛型)
b:泛型方法
c:泛型接口
(5)泛型的使用:
api中的类或者接口,其跟有<e>,就是泛型的应用。
一般在集合中用集合 (1)可以对多个对象进行存储,方便我们对多个对象的操作
(2)集合的特点:
1、长度可以发生改变
2、只能存储对象
3、可以存储多种类型对象(一般存储的还是同一种)
(3)集合和数组的区别
1、长度问题 数组固定;集合可变
2、存储元素问题
数组可以是基本类型,也可以是引用类型。
集合只能是引用类型。
3、是否同一类型
数组元素类型一致。
集合元素类型可以不一致。(在生成集合对象的时候不指定类型)
(4)集合体系的由来
集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。
集合的特点:
collection 一次存一个对象, 单列集合
list 可重复, 有索引,有序
arraylist 数组实现, 查找快, 线程不安全
linkedlist 链表实现, 增删快, 线程不安全
vector 数组实现, 线程安全
set 不可重复, 没索引,无序
hashset 使用哈希算法去重复, 效率高, 但元素无序
treeset treeset是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
linkedhashset hashset的子类, 原理相同, 除了去重复之外还能保留存储顺序
这里先介绍集合的抽象类,而其抽象类提供的方法其实就是大部分需要用到的功能。学会了父类,再去学习其字类的功能,就会快很多了,因为子类拓展的功能其实并不多。这里所介绍的六个具体实现类只是其中比较常用的,还有很多其他实现类,有兴趣的朋友可以通过api去查看。
---恢复内容结束---
集合当中有很多都是应用到泛型的技术,所以在讲集合之前,应该先将泛型的概念普及一下。
泛型:
(1)泛型是一种类型,但是这种类型是在编译或者调用方法时才确定。
(2)格式:
<数据类型> 如:collection<e>这里的e指的是任意类型,可以理解为object类型,因为object是所有类的根类
(3)好处:
a:把运行期间的转换异常给提前到了编译期间
b:优化了程序设计,不需要强制类型转换
c:在减少了代码量的同时还增强了程序的可拓展性
(4)泛型的演变
a:泛型类(尤其是在c++中有很多的模板类,其实就是java中的泛型)
b:泛型方法
c:泛型接口
(5)泛型的使用:
api中的类或者接口,其跟有<e>,就是泛型的应用。
一般在集合中用集合 (1)可以对多个对象进行存储,方便我们对多个对象的操作
(2)集合的特点:
1、长度可以发生改变
2、只能存储对象
3、可以存储多种类型对象(一般存储的还是同一种)
(3)集合和数组的区别
1、长度问题 数组固定;集合可变
2、存储元素问题
数组可以是基本类型,也可以是引用类型。
集合只能是引用类型。
3、是否同一类型
数组元素类型一致。
集合元素类型可以不一致。(在生成集合对象的时候不指定类型)
(4)集合体系的由来
集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。
而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构。
集合的特点:
collection 一次存一个对象, 单列集合
list 可重复, 有索引,有序
arraylist 数组实现, 查找快, 线程不安全
linkedlist 链表实现, 增删快, 线程不安全
vector 数组实现, 线程安全
set 不可重复, 没索引,无序
hashset 使用哈希算法去重复, 效率高, 但元素无序
treeset treeset是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
linkedhashset hashset的子类, 原理相同, 除了去重复之外还能保留存储顺序
这里先介绍集合的抽象类,而其抽象类提供的方法其实就是大部分需要用到的功能。学会了父类,再去学习其字类的功能,就会快很多了,因为子类拓展的功能其实并不多。这里所介绍的六个具体实现类只是其中比较常用的,还有很多其他实现类,有兴趣的朋友可以通过api去查看。
推荐阅读
-
JAVA系列之(1) - 枚举定义的格式
-
java学习笔记(基础篇)—集合
-
【读书记录】Java核心技术 卷1【基础知识】
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
零基础Java系列【1】——开发环境篇
-
Java集合基础知识 List/Set/Map详解
-
Java 集合系列(二)ArrayList详解
-
详解Java 集合系列(三)—— LinkedList
-
Java基础巩固系列包装类代码实例
-
详解Java基础篇--面向对象1(构造方法,static、this关键字)