面向对象超类型Object--存储数据
缺点:1)读取数据,不能自动转换为对应的类型
2)设置数据,不能检查类型
泛型参数:
1)泛型参数装的是【数据的类型】
2)可以在(接口、类、方法)中使用泛型参数代替【数据类型】
3)使用(接口、类、方法)的时候传入并确定泛型参数里的【具体的数据类型】
使用泛型参数的步骤:
1)在(接口、类)定义泛型参数
语法:class 类名[<泛型参数名1,泛型参数名2...>]{ }
2)在(接口、类)中用泛型参数代替具体的数据类型
位置:成员的结构-成员变量,成员方法,构造器...
3)在使用(接口,类)的时候-传入具体的类型
语法:类名<具体的类型1,具体的类型2...
优点:1)读取数据,能自动转换为对应的类型
2)设置数据,能检查类型
注意点:
1)泛型参数对应的 具体的类型==>必须是引用类型
2)引用类型之间在赋值的时候引用指向类型对应的泛型参数类型必须一致(没有通配符的时候)
如果类或接口有泛型参数-但是没有传入具体的类型-》出现泛型擦出-》自动把参数设置为object
数组容器
1)一种容器,可以装很多的元素
2)元素绑定下标,下标范围(0到length-1)
3)通过下标访问元素
4)元素可以重复
5)数组容器的长度固定
List容器(动态的数组)
1)一种容器,可以装很多的元素
2)元素绑定下标,下标范围(0到size-1)
3)通过下标访问元素
4)元素可以重复
5)List容器的长度不固定,容器创建的时候长度为0,装多少算多少。
list接口-》规范list容器具有的的功能(增加,删除,插入...)-》定义了api
list的实现类
a)arrayList:底层通过数组存储容器数据,添加,修改,访问元素的性能比linkedList好
线程不安全-性能比vector好
b)linkedList:底层通过双向链表存储容器数据,删除,插入元素的性能比arrayList好
c)vector:底层通过数组存储容器数据,
线程安全
Set容器
1)一种容器,可以装很多的元素
2)元素不会绑定下标
3)通过访问元素-->通过迭代器(容器的管理者)
4)元素不能重复
5)Set容器的长度不固定,容器创建的时候长度为0,装多少算多少。
set接口-》规范set容器具有的的功能(增加,删除...)-》定义了api
set的实现类
a)hashset:底层通过hashMap存储容器数据,
hashset的性能通常比treeset好。
b)treeset:底层通过treeMap存储容器数据,
treeset增加了功能,自动为加入元素升序排列--但是一般不使用-
list和set容器特点
list特点:元素可以重复,下标有序
set特点:元素不能重复,没有下标
map容器(类似于list)--》一组键值对(数据成对出现)
1)一种容器,可以装很多的键值对(键和值)
2)值绑定键,键范围(任何类型任何值)
3)通过键访问值
4)值可以重复--》键不能重复
5)map容器的长度不固定,容器创建的时候长度为0,装多少算多少。
map接口-》规范map容器具有的的功能(增加,删除...)-》定义了api
map的实现类
1)HashMap:底层是数组加单向链表实现存储数据
HashMap性能通常比TreeMap好
HashMap线程不安全
2)TreeMap:底层是红黑树存储数据
TreeMap增加了,对加入数据按键进行升序排列的功能
3)Hashtable::底层是数组加单向链表实现存储数据
Hashtable线程安全
4)Properties:继承了Hashtable,主要用于map数据
与properties格式的文件进行交互(读取,写出)使用
list-set-map所有实现类都有重写toString,都可以把元素内容表达出来
collection和set和list的特点
collection:一种容器,可以装很多元素
list:一种容器,可以装很多元素,元素可以重复,有下标
set:一种容器,可以装很多元素,元素不能重复,没有下标
collection-》定义list和set都需要使用的通用api
遍历list容器-取出所有的元素
1)普通for
2)增强for
3)迭代器
遍历set容器-取出所有的元素
1)增强for
2)迭代器
迭代器Iterator(容器的管理者)
迭代器遍历的步骤
1)通过(list或set)容器找到管理者(Iterator)
2)通过管理者 (Iterator)进行遍历
遍历的过程
a)hasNext() true 看有没有下一个元素
b)next 拿到下一个元素
a)hasNext() true 看有没有下一个元素
b)next 拿到下一个元素 ...
a)hasNext() false 看有没有下一个元素
map的遍历
a)只遍历所有的值
map容器.vlaues(); 把map容器中的所有的值装入了collection容器中并返回
b)遍历键和值
map容器.keySet();把map容器中的所有的键装入了Set容器中并返回 --》再通过map.get(键)-》得到值
map容器.entrySet();把map容器中的所有的键值对(Map.Entry的对象)装入了Set容器中并返回