JAVA学习(5)容器

一、容器类

1.概念

容器是Java提供的一些数据结构,容器类是Java类库中提供的用于管理对象集合的类。其中存放的均为对象的引用。

2.功能

1.持有、操作对象
2.自动完成容量的变化

3.Java容器类的框架

在这里插入图片描述

二、Collection接口

1.提供的方法

在这里插入图片描述

2.面向接口编程

使用容器类时定义为接口类型,初始化为具体的容器类类型,如果要修改具体的接口实现类,只需要改变创建对象的代码。

三、List接口

1.概念与特点

Collection接口的子接口
实现该接口的类的元素有序,可重复

2.主要实现方法

在这里插入图片描述

3.使用泛型实现

如:
在这里插入图片描述
可以限定为只能放String。
如果不用泛型,放进去是Object,取出来也是Object,有时要强制类型转换。

4.Vector实现类

与ArrayList一样,但是线程安全,可以同步,运行效率低。
它其实比List出现的早,有一套自己的方法
不建议使用
在这里插入图片描述

5.Stack实现类

是Vector子类,当然也实现了List,但注意不要使用非栈的方法,要保持栈的特点。
主要方法:
在这里插入图片描述

四、Queue接口

1.描述

一种先进先出的容器

2.主要方法

在这里插入图片描述

3.LinkedLIst实现类

在这里插入图片描述

五、set接口

1.描述

Collection接口子接口,并无额外方法,是为了表现不同的行为(继承于多态思想的典型应用)。

2.HashSet实现类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
已经重写了equals的情况下:
为什么第一个例子中两个Student对象都放进去了?第二个例子中没有删除成功?
或者说Set是怎么判断两对象相同的?
在这里插入图片描述

3.hashCode

在这里插入图片描述
一个类要实现hashCode,必须和equals一起实现,关系如下:
在这里插入图片描述
Hash相关容器判断两个对象流程:
在这里插入图片描述
具体实现:
在这里插入图片描述

4.TreeSet实现类

主要是有序了
在这里插入图片描述

排序规则(Comparable,Comparator)

那么它只能接受实现了Comparable接口的类的对象(自然排序,继承Comparable接口,在类内重写compareTo),或者在构造时传入实现了Comparator< E >接口的类对象形参。(定制排序,新建一个继承Comparatoe接口的类,实现compare方法)
此处整理一下两个排序方法:
在这里插入图片描述
以之前写过的teacher类排序为例。
在这里插入图片描述
在这里插入图片描述

六、Map接口

1.描述

在这里插入图片描述

2.HashMap实现类

常用方法:
在这里插入图片描述

3.Hashtable实现类

与HashMap一样,也是线程问题,它是线程安全的,效率低,比较老

4.Properties实现类

在这里插入图片描述

七、迭代器

1.描述

不是容器,实现对容器的遍历,可以以统一的方式遍历对象。

2.主要方法

在这里插入图片描述

3.Iterator实现类

首先,每个Collection实现类都有iterator()方法,返回实现了iterator接口的对象。(每个实现类这个对象都不一样,可以用.getClass().getName()输出看一看)这个对象可以实现对具体容器类的迭代,具体实现不用关心。

向前遍历举例:

删除元素举例:

在这里插入图片描述
使用类的删除方法可能发生异常。

增强版的for循环:

在这里插入图片描述
在这里插入图片描述
缺点:对于数组,不方便访问下标,对于Collection,不方便删除,所以除了简单遍历,一般不用。

4.ListIterator实现类

描述

Iterator子类型,可双向遍历。

创建方法

在这里插入图片描述

双向循环举例:

只适合与List接口
在这里插入图片描述

5.Enumeration接口

只遍历Vector和HashTable,不支持删除,也是历史问题。

八、其他实用类

1.Collections类

提供List容器静态方法。
在这里插入图片描述

2.Arrays类

实现数组元素的一些方法。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值