有缘之人可以逆转时光回到过去|

小钰大猪崽

园龄:2年10个月粉丝:0关注:1

Java—集合框架

什么是集合🍍

集合是对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能,

和数组的区别:

  1. 数组长度固定,集合长度不固定

  2. 数组可以存储基本类型和引用类型,集合只能存储引用类型

  3. 位置:Java.util.


Collection框架🍎

体系结构:

Collection接口:List接口,Set接口

List接口:ArrayList实现类,LinkedList实现类,Vetor实现类

Set接口:HashSet实现类,SortedSet接口

SortedSet接口:TreeSet实现类

Map接口:HashMap实现类,SortMap接口

SortMap接口:TreeMap实现类

如图:

Collection框架
List接口
Set接口
Map接口
ArrayList实现类
LinkedList实现类
Vetor实现类
HashSet实现类
SortSet接口
TreeSet实现类
HashMap实现类
SortMap接口
TreeMap实现类

注释:

List接口特点:有序,有下表,元素可重复

Set接口特点:无序,无下表,元素不能重复

Map接口特点:1.用于存储任意键值对,2.键:无序,无下标,不允许重复的,3.值:无序,无下标,允许重复

Collection接口🍏

特点:代表一组任意类型对象,无序,无下标,不能重复

常用方法:

add(object obj)

添加一个对象

addAll(Collection c)

将集合中的所有对象添加到此集合中

clear()

清空此集合的所有对象

contains(Object obj)

检查此集合是否包含obj对象

equals(Object obj)

比较此集合是否与指定的对象相等

isEmpty()

判断此集合是否为空

remove(Object obj)

在此集合中移除obj对象

size()

返回此集合中的元素个数

roArray()

将此集合转换为数组

List子接口🍐

特点:有序,有下标,元素可以重复

常用方法:

get(int index)

返回集合中指定位置的元素

subList(int formIndex,int toIndex)

返回formIndex和toIndex之间的集合元素

List实现类

ArrayList

数组结构实现,查询快,增删慢

jdk1.2版本,运行效率快,线程不安全

源码分析:

DEFULT_CAPACITY默认为10

注意:如果没有向集合添加任何元素时容量0,添加一个元素之后容量为10,每次扩容大小为原来的1.5倍

elementData:存放元素的数组

size:实际元素个数

Vector

数组结构实现,查询快,增删慢

jdk1.0版本,运行效率慢,线程安全

LinkedList

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

泛型

Java泛型是jdk1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数

常见的形式有:泛型类,泛型接口,泛型方法

语法:<T,...>,T称为类型占位符,表示一种引用类型

意义:1.提高代码的重用性。2.防止类型转换异常,提高代码的安全性。

泛型类

在类名后

注意:1.泛型只能使用引用类型,2.不同泛型对象之间不能互相赋值

例如:public class main{}

泛型接口

在接口名后面

例如:public interface interfacename{} 实现:public class Interfacempl implements Interface{重写方法}

泛型方法

在方法名前

public T show(T t){只能在这个作用域使用泛型}

泛型集合

概念:参数化类型,类型安全的集合,强制集合元素的类型必须一致

特点:

编译时可检查,而非运行时抛出异常

访问时,不必类型转换

不同泛型之间引用不能相互赋值,泛型不存在多态

Set子接口🍑

HashSet

结构:哈希表

基于hashcode实现元素不重复

当存入元素的哈希码相同,会调用equals进行确认,如结果为true,则拒绝后这插入

TreeSet

结构:红黑树

基于排列顺序实现元素不重复

实现了sortedSet接口,对集合元素自动排序

元素对象的类型必须实现Comparable接口,指定排序规则

通过ComparableTo方法确定是否为重复元素

加入特定的引用类型需要重写Comparable

Map集合🍒

特点:存储一对数据,无序,无下标,键不能重复,值可重复

常用方法:

put(K key,V value)

将对象存放在集合中,关联键值,key重复则覆盖原值

get(Object key)

根据键获得对应的值

Set

返回所有key

Collection values()

返回包含所有值的Collection集合

Set<Map.Entry<K,V>>

键值匹配的Set集合

HashMap

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

存储结构:哈希表

源码:

  1. HashMap刚创建时,table是null,为了节省空间,当添加第一个元素时,table容量调整为16

  2. 当元素个数大于阀值(16*0.75=12)时,会进行扩容,扩容后大小为原来的2倍,目的是减少调整元素的个数

  3. jdk1.8当每个链表长度大于8,并且元素个数大于等于64时,会调整为红黑树,目的是提高执行效率

  4. jdk1.8当链表长度小于6时,调整为链表

  5. jdk1.8以前,链表时头插入,jdk1.8后是尾插入

HashTable

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

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

TreeMap

实现了SortedMap接口,是Map的子接口,可以对Key自动排序

用法和treeSet差不多

posted @   小钰大猪崽  阅读(20)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 FSF REOL
FSF - REOL
00:00 / 00:00
An audio error has occurred.