泛型,数据集合类

Java 泛型

定义:通过类型参数化来提高程序代码重用性

类型参数化:将类,接口或方法所处理数据的类型抽象成参数,这样可以定义出泛型类,泛型接口或泛型方法。
在这里插入图片描述

泛型编程

定义:使用java API中的泛型类,泛型接口或泛型方法编程,亦或是编写自己的泛型类

注:限定类型实参,在某个类族或接口族范围内。
例:

GenericSet<T extends Number>//只能是是数值类number或其子类

泛型族

定义:基于同一泛型类为某个类族或接口族中的每个类分别定义出一个具体的类,这些具体类合在一起为泛型族。
例:

泛型类:A<T>
泛型族:A<Number>,A<Byte>,A<Short>,,,

通配符类型的引用变量

三种通配符类型

泛型名<?>

A<?>ref;//引用任何对象

泛型名<? extends 类名>

A<? extends Number>ref;//引用number及其子类

泛型名<? super 类名>

A<? super Integer>ref;//只能引用类integer或其超类

数据集合类

在这里插入图片描述

Collection接口

在这里插入图片描述

Map接口

在这里插入图片描述

Iterator(迭代器)

描述了遍历数据集合时的元素的元素位置信息
在这里插入图片描述
Iterable是一个超级接口,被Collection所继承,且只有一个方法 Iterator iterator() //即返回一个迭代器

在这里插入图片描述

Collections类

包含各种数据集合算法(静态方法)
具体细节

List 接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

set 接口

在这里插入图片描述

Deque接口

在这里插入图片描述

Map接口

在这里插入图片描述

ArrayList< E>

实现了Collection,可以实现动态数组的功能。
方法一:增强for循环遍历:

for(String attribute : list) 
{ 
    System.out.println(attribute); 
}

方法二:for循环遍历

for(int i = 0 ; i < list.size() ; i++)
{ 
   system.out.println(list.get(i)); 
}

方法三:用迭代器迭代:

Iterator it = list.iterator();
 while(it.hasNext()) {
 System.ou.println(it.next);
 }

LinkedList< E>

实现集合接口Collection,Deque

使用双端队列类可实现队列和堆栈的功能。

队列:先进先出

offer()//队尾添加元素
poll()//取出并删除队列头元素

堆栈:后进先出

push()//向堆栈中压入一个元素
pop()//从堆栈中弹出一个元素

HashSet< E>

实现了集合接口Collection

特点:

集合中数据元素是无序的
集合中数据元素不能重复(用equals判断)
不能使用普通for语句遍历

TreeSet< E>

在这里插入图片描述

HashMap< E>

实现了映射接口Map<K,V>

特点:

数据元素是无序的
数据元素的键不能重复
映射没有迭代器,其中元素没有序号。(如需遍历,将键转为集合,再按集合遍历)

TreeMap

在这里插入图片描述
参考

Collections 集合工具类

在这里插入图片描述
在这里插入图片描述
线程安全:
在这里插入图片描述

注意

ArrayList 扩容是50%,vector 是加倍

vector 线程安全

HashSet 是由 HashMap 实现的

HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类

HashMap的key-value支持key-value,null-null,key-null,null-value四种

Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1

HashMap默认的初始化大小为16,之后每次扩充,容量变为原来的2倍

Hashtable已经被弃用的一个类,性能比较低

HashMap和HashTable都使用哈希表来存储键值对

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Ma.01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值