java容器应用实例_JAVA容器

JAVA容器

一、容器体系结构

java.util

eab575bddac75e9af902e643fbc87d62.png

二、迭代器Iterator

迭代器是一种设计模式,可以遍历并选择序列中的对象,而开发人员并不需要了解该序列的底层结构。迭代器通常被称为”轻量级”对象,因为创建它的代价小。

JAVA的Iterator功能比较简单,并且只能单向移动。

相对Iterator而言,for()循环遍历的速度较快点。而Iterator则比较通用,且序列的内部状态都由Iterator维护。

函数

功能

hasNext()

检查序列下一个元素是否存在。

next()

获取序列下一个元素。

remove()

将迭代器新返回的元素删除。

实例:

publicclassArrayToList {

staticvoidprintList(List list){

for(String e : list)

System.out.print(""+ e);

System.out.println();

}

publicstaticvoidmain(String[] args) {

String[] strs = {"xue","ma","xiong","feng", };

//方法一

List strList = Arrays.asList(strs);

ArrayToList.printList(strList);

//方法二

List strList1 =newArrayList(strs.length);

for(String e : strs)

strList1.add(e);

ArrayToList.printList(strList1);

//方法三

List strList2 =newArrayList();

Collections.addAll(strList2, strs);

ArrayToList.printList(strList2);

}

}

运行结果:

元素:xue

数组:[ma, xiong, feng]

元素:ma

数组:[xiong, feng]

元素:xiong

数组:[feng]

元素:feng

数组:[]

三、类集Collection

与C++STL类似。Collection所有容器类都必须实现的接口。

所有通用的Collection实现类都应该提供两个“标准”构造方法:一个是void(无参)构造方法,用于创建空的Collection;另一个是带有Collection类型单参数的构造方法,用于创建一个具有与参数相同元素的新的collection。

函数

参数

功能

add

(E e)

确保此collection包含指定的元素(末尾)。

addAll

(Collection extends E> c)

将指定collection中的所有元素都添加到此collection中(末尾)。

clear

移除此collection中的所有元素(可选操作)。

contains

(Object o)

如果此collection包含指定的元素,则返回true。

containsAll

(Collection> c)

如果此collection包含指定collection中的所有元素,则返回true。

equals

(Object o)

比较此collection与指定对象是否相等。

hashCode

返回此collection的哈希码值。

isEmpty

如果此collection不包含元素,则返回true。

iterator

返回在此collection的元素上进行迭代的迭代器。

remove

(Object o)

从此collection中移除指定元素的单个实例,如果存在的话(可选操作)。

removeAll

(Collection> c)

移除此collection中那些也包含在指定collection中的所有元素(可选操作)。

retainAll

(Collection> c)

仅保留此collection中那些也包含在指定collection的元素(可选操作)。

size

(Collection> c)

返回此collection中的元素数。

toArray

返回包含此collection中所有元素的数组。

toArray

(T[] a)

返回包含此collection中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

应用实例:

publicclassTestCollection {

publicstaticvoidmain(String[] args) {

Collectioncollection =newArrayList();

Collectioncollection1 =newArrayList();

//向容器中加入对象

collection.add("Hello");

collection1.add("Hello");

collection.add(newInteger(1));

//collection1.add(new Integer(1));

Object obj =newObject();

collection.add(obj);

//collection1.add(obj);

//size返回collection中的元素数

System.out.println("容器的长度:"+collection.size());

System.out.println("容器:"+collection.toString());

System.out.println("容器1:"+collection1.toString());

//转换为数组

Object[] object= collection.toArray();

//未进行类型转换

System.out.println("第一个元素是:"+object[0]);

//移除容器中制定的对象

collection.remove(obj);

System.out.println("容器:"+collection.toString());

//清空容器中的对象

collection.clear();

System.out.println("容器的长度:"+collection.size());

System.out.println("容器:"+collection.toString());

}

}

运行结果:

容器的长度:3

容器:[Hello, 1, java.lang.Object@2de41d]

容器1:[Hello]

第一个元素是:Hello

容器:[Hello, 1]

容器的长度:0

容器:[]

注:在本例中也体系了泛型的好处。第一个容器没有使用泛型,可以向其添加不同类型的数据。第二个容器使用了泛型,只能向其添加String类型数据。

四、序列List

是有序的Collection。程序员可以对列表中每个元素的插入位置进行精确地控制,也可以根据元素的整数索引访问元素,并搜索列表中的元素。

列表允许存在重复的元素。List提供了4种对列表元素进行定位(索引)访问方法。List接口提供了特殊的迭代器,称为ListIterator,除了允许Iterator接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。

List除了继承Collection的方法外,扩展了如下方法:

函数

参数

功能

add

(int index, E element)

在列表的指定位置插入指定元素

addAll

(int index, Collection extends E> c)

将指定collection中的所有元素都插入到列表中的指定位置

get

(int index)

返回列表中指定位置的元素。

indexOf

(Object o)

返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回-1。

boolean isEmpty()

lastIndexOf

(Object o)

返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回-1。

listIterator

返回此列表元素的列表迭代器(按适当顺序)。

listIterator

(int index)

返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。

remove

(int index)

移除列表中指定位置的元素

set

(int index, E element)

用指定元素替换列表中指定位置的元素

subList

(int fromIndex, int toIndex)

返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图

五、动态数组ArrayList

ArrayList是Array的复杂版本。提供:动态地增加和减少数组的元素;灵活设置数组的大小。

每个ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。

在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。

ArrayList继承了List的方法外,其扩展了如下方法:

函数

参数

功能

ArrayList

构造一个初始容量为10的空列表。

ArrayList

(Collection extends E> c)

构造一个包含指定collection的元素的列表,这些元素是按照该collection的迭代器返回它们的顺序排列的。

ArrayList

(int initialCapacity

构造一个具有指定初始容量的空列表。

clone

返回此ArrayList实例的浅表副本。

ensureCapacity

(int minCapacity)

如有必要,增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。

removeRange

(int fromIndex,

int toIndex)

移除列表中索引在fromIndex(包括)和toIndex(不包括)之间的所有元素。

trimTosize

将此ArrayList实例的容量调整为列表的当前大小。

六、链表LinkedList

LinkedList是一种双向的链式结构。相对ArrayList而言,LinkedList的插入和删除元素相对方便,但速度较慢。

除了实现List接口外,LinkedList类还为在列表的开头及结尾get、remove和insert元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。

LinkedList继承了List的方法外,其扩展了如下方法:

函数

方法

功能

LinkedList

构造一个空列表。

LinkedList

(Collection extends E> c)

构造一个包含指定collection中的元素的列表,这些元素按其collection的迭代器返回的顺序排列。

addFirst

(E e)

将指定元素插入此列表的开头。

addLast

(E e)

将指定元素插入此列表的结尾。

clone

返回此LinkedList的浅表副本。

descendingIterator

返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。

element

获取但不移除此列表的头(第一个元素)。

getFirst

返回此列表的第一个元素。

getLast

返回此列表的最后一个元素。

lastIndexOf

返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回-1。

listIterator

(int index)

返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。

offer

(E e)

将指定元素添加到此列表的末尾

offerFirst

(E e)

在此列表的开头插入指定的元素。

offerLast

(E e)

在此列表末尾插入指定的元素。

peek

获取但不移除此列表的头

peekFirst

获取但不移除此列表的第一个元素;如果此列表为空,则返回null。

peekLast

获取但不移除此列表的最后一个元素;如果此列表为空,则返回null。

poll

获取并移除此列表的头(第一个元素)

pollFirst

获取并移除此列表的第一个元素;如果此列表为空,则返回null。

pollLast

获取并移除此列表的最后一个元素;如果此列表为空,则返回null。

pop

将元素推入此列表所表示的堆栈。

push

(E e)

将元素推入此列表所表示的堆栈。

removeFirst

移除并返回此列表的第一个元素。

removeFirstOccurrence

(Object o)

从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。

七、集合Set

Set和数学中的集合是同一个概念,就是没有重复元素的集合,是一个不包含重复元素的collection。更确切地讲,set不包含满足e1.equals(e2)的元素对e1和e2,并且最多包含一个null元素。

Set继承Collection的所有方法,没有扩展了其他方法。

八、映射Map

Map接口提供三种collection视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。

所有通用的映射实现类应该提供两个“标准的”构造方法:一个void(无参数)构造方法,用于创建空映射;一个是带有单个Map类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射。

Map继承Collection的所有方法,并扩展了其他方法:

函数

参数

功能

containsKey

(Object key)

如果此映射包含指定键的映射关系,则返回true。

containsValue

(Object key)

如果此映射将一个或多个键映射到指定值,则返回true。

entrySet

返回此映射中包含的映射关系的Set视图。

keySet

返回此映射中包含的键的Set视图。

put

(K key, V value)

将指定的值与此映射中的指定键关联。

putAll

(Map extends K,? extends V> m)

从指定映射中将所有映射关系复制到此映射中.

values

返回此映射中包含的值的Collection视图。

九、队列Queue

Queue实现通常不允许插入null元素,尽管某些实现(如LinkedList)并不禁止插入null。即使在允许null的实现中,也不应该将null插入到Queue中,因为null也用作poll方法的一个特殊返回值,表明队列不包含元素。

Queue继承Collection的所有方法,并扩展了其他方法:

函数

参数

方法

element

获取,但是不移除此队列的头。

offer

(E e)

将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于add(E),后者可能无法插入元素,而只是抛出一个异常。

peek

获取但不移除此队列的头;如果此队列为空,则返回null。

poll

获取并移除此队列的头,如果此队列为空,则返回null。

remove

获取并移除此队列的头。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值