java 入门 -- 容器类

36 篇文章 0 订阅

概述

Java容器类是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。

Java容器主要可以划分为4个部分:List列表Set集合Map映射工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)
在这里插入图片描述
容器的概述图
在这里插入图片描述

Collection接口

Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。Collection包含了List和Set两大分支。

List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。List的实现类有LinkedList, ArrayList, Vector, Stack。
Set是一个不允许有重复元素的集合。 Set的实现类有HastSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

定义

public interface Collection<E> extends Iterable<E> {}

它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作:添加、删除、清空、遍历(读取)、是否为空、获取大小、是否保护某元素等等。

在Java中所有实现了Collection接口的类都必须提供两套标准的构造函数,一个是无参,用于创建一个空的Collection,一个是带有Collection参数的有参构造函数,用于创建一个新的Collection,这个新的Collection与传入进来的Collection具备相同的元素。

常见API

abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void            clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]        toArray()

List接口

定义:public interface List<E> extends Collection<E> {}
List是集合中的一种。
List是有序的队列,List中的每一个元素都有一个索引;
第一个元素的索引值是0,往后的元素的索引值依次+1。
List中允许有重复的元素。
常见API

// Collection的API
abstract boolean         add(E object)
abstract boolean         addAll(Collection<? extends E> collection)
abstract void            clear()
abstract boolean         contains(Object object)
abstract boolean         containsAll(Collection<?> collection)
abstract boolean         equals(Object object)
abstract int             hashCode()
abstract boolean         isEmpty()
abstract Iterator<E>     iterator()
abstract boolean         remove(Object object)
abstract boolean         removeAll(Collection<?> collection)
abstract boolean         retainAll(Collection<?> collection)
abstract int             size()
abstract <T> T[]         toArray(T[] array)
abstract Object[]        toArray()
// 相比与Collection,List新增的API:
abstract void                add(int location, E object)
abstract boolean             addAll(int location, Collection<? extends E> collection)
abstract E                   get(int location)
abstract int                 indexOf(Object object)
abstract int                 lastIndexOf(Object object)
abstract ListIterator<E>     listIterator(int location)
abstract ListIterator<E>     listIterator()
abstract E                   remove(int location)
abstract E                   set(int location, E object)
abstract List<E>             subList(int start, int end)

注:实现List接口的集合主要有:ArrayList、LinkedList、Vector、Stack。

Set接口

定义:public interface Set<E> extends Collection<E> {}

Set是一个继承于Collection的接口
Set是一种不包括重复元素的Collection。
它维持它自己的内部排序,所以随机访问没有任何意义。
允许null的存在但是仅有一个。
由于Set接口的特殊性,所有传入Set集合中的元素都必须不同,

实现了Set接口的集合有:HashSet、TreeSet、LinkedHashSet、EnumSet。

Map接口

Map是一个映射接口,即key-value键值对。Map中的每一个元素包含“一个key”和“key对应的value”
在Map中它保证了key与value之间的一一对应关系。也就是说一个key对应一个value,所以它不能存在相同的key值,当然value值可以相同。

实现map的集合有:HashMap、HashTable、TreeMap、WeakHashMap。

Iterator迭代器

遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合。
我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象。ListIterator是专门为遍历List而存在的。

定义

Iterator是一个接口,它是集合的迭代器。
集合可以通过Iterator去遍历集合中的元素。

public interface Iterator<E> {}

常见API

Iterator提供的API接口,包括:是否存在下一个元素、获取下一个元素、删除当前元素。

abstract boolean hasNext()
abstract E next()
abstract void remove()

注意:Iterator遍历Collection时,是fail-fast机制的。即,当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。关于fail-fast的详细内容,我们会在后面专门进行说明。

Enumeration

JDK 1.0引入的抽象类。
作用和Iterator一样,也是遍历集合;
Enumeration的功能要比Iterator少。Enumeration只能在Hashtable, Vector, Stack中使用。

Arrays

操作数组的工具类

Collections

操作集合的工具类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值