2021-04-12 集合框架

第十二节 集合框架

集合的概念

什么是集合

概念:
集合是对象的容器,定义了多个对象进行操作的方法,可实现数组的功能
集合和数组的区别:
数组长度固定,集合长度不固定
数组可以存储基本类型和引用类型,集合只能存储引用数据类型
位置:java.util.*;

Collection体系集合

collection 该体系结构的根接口,代表一组对象,称为集合

List接口的特点:有下标,元素可重复

ArrayList
Vector
LinkedList

Set接口的特点:无下标,元素不能重复

HashSet
LinledHashSet
SortedSet TreeSet 这两个都是接口

collection父接口

特点:代表一组任意类型的对象,无序,无下标
方法:
boolean add(Object obj)//添加一个对象
boolean addAll(Collection c)//将一个集合中所有对象添加到此集合中
void clear()//清空此集合中所有的对象
boolean contains(Object o)//检查此集合中是否包含o对象
boolean equals(Object o)//比较此集合是否与指定对象相同
boolean isEmpty()//判断此集合是否为空
boolean remove(Object o)//在此集合中移除o对象
int size()//返回此集合中的元素个数
Object[] toArray()///将此集合转换成数组

List接口实现类

List子接口

特点:有序 有下标,元素可以重复
方法:
void add(int index,Object o)//在index位置插入对象o
boolean addAll(int index,Collection c)//将一个集合中的元素添加到此集合中的index位置
Object get(int index)//返回集合中指定位置的元素
List subList(int formIndex,int toIndex)//返回formIndex和toIndex之间的集合元素

List实现类
ArrayList

数组结构实现,查询快,增删慢:
jdk1.2版本,运行效率快,线程不安全

Vector:

数组结构实现,查询快,增删慢
jdk1.0版本,运行效率慢,线程安全

LinkedList

链表结构实现,增删快,查询慢

不同结构实现方式

ArrayList :数组结构实现,必须开辟连续空间,查询快,增删慢,线程不安全,运行效率快
LinkedList:链表结构实现,无需开辟连续空间,查询慢,增删快

Set接口与实现类

Set子接口

特点:无需,无下标,元素不可重复
方法:全部继承自Collection中的方法
使用foreach循环遍历:
for(数据类型 局部变量:集合名){
//循环内部的局部变量,代表当次循环从集合中取出的对象。
}

Set实现类
HashSet

基于HashCode实现元素不重复
当存入元素的哈希吗相同时,会调用==或者equals进行确认,结果为true,拒绝后者存入

LinkedHashSet

链表实现的HashSet,按照链表进行存储,即可保留元素的插入顺序

TreeSet

基于排列顺序实现元素不重复
实现了SortedSet接口对集合元素自动排序
元素对象的类型必须实现Comparable接口,指定排序规则
通过ComparableTo方法确定是否为重复元素

Map接口与实现类

Map结构

interface Map
class HashMap Hashtable(class Properties) interface SortedMap(class TreeMap)

Map接口的特点

用于存储任意键值对(Key Value)
键:无下标,不可以重复(唯一)
值:无下标,可以重复

Map父接口

特点:
称为映射,存储一对数据(Key-Value),键不可重复,值可以重复
方法:
V put(K key,V value)//将对象存入到集合中,关联键值。key重复则覆盖原值
Object get(Object key)//根据键获取对应的值
SetkeySet()//返回所有的key
Collectionvalue() //返回包含所有值得Collection集合
Set<Map.Entry<K,V>>entrySet()//键值匹配的Set集合。

Map集合的实现类
HashMap

jdk1.2版本,线程不安全,运行效率快,允许用null作为key或是value

Hashtable

jdk1.0版本,线程安全,运行效率慢,不允许null作为key或是value

Properties

Hashtable的子类,要求key和value都是String,通常用于配置文件的读取

TreeMap

实现了SortedMap接口(Map的子接口),可以对key自动排序,Key需实现Comparable接口

泛型集合与工具类

泛型

java泛型是jdk1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递
常见形式有泛型类,泛型接口,泛型方法
语法:
< T,…>T 称为类型占位符,表示一种引用类型
好处:
提高代码的重用性
防止类型转换异常,提高代码的安全性

泛型集合

概念:
参数化类型,类型安全的集合,强制集合元素的类型必须一致
特点:
编译时即可检查,而非运行时跳出异常
访问时,不必类型转换(拆箱)
不同泛型之间引用不能相互赋值,泛型不存在多态

Collections工具类

概念:
集合工具类,定义了除了存取以外的集合常用方法
方法:
public static void reverse(List<?>list)//反转集合中所有元素的顺序
public static void shuffle(List<?>list)//随机重置集合元素的顺序
public static void sort(Listlist)//升序排序(元素类型必须实现Comparable接口)

总结

集合概念:
对象的容器,存储对象的对象,定义了对多个对象进行操作的常用方法
List集合:
有下标,元素可以重复,(ArrayList,LinkedList,Vector)
Set集合:
无下标,元素不可重复,(HashSet,LinkedHashSet,TreeSet)
Map集合:
存储一对数据,键不可重复,值可重复(HashMap,Hashtable Properties,TreeMap)
Collections:
集合工具类,定义了除了存取以外的集合常用方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值