java集合-map和queue的方法
Posted 藤原拓海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合-map和queue的方法相关的知识,希望对你有一定的参考价值。
从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
一、Collection接口
Collection 接口是List、Set 和Queue接口的父接口,该接口里定义的方法既可用于操作,Set集合,也可用于操作List和Queue集合。Collection接口里定义了如下操作集合元素的方法。
➢boolean add(Object o): 该方法用于向集合里添加一-个元素。如果集合对象被添加操作改变了,则返回true。
➢boolean addAll(Collection c): 该方法把集合c里的所有元素添加到指定集合里。如果集合对象被添加操作改变了,则返回true。
➢void clear(): 清除集合里的所有元素,将集合长度变为0。
➢boolean contains(Object 0): 返回集合里是否包含指定元素。
➢boolean containsAll(Collection c): 返回集合里是否包含集合c里的所有元素。
➢boolean isEmpty(): 返回集合是否为空。当集合长度为0时返回true,否则返回false。
➢Iterator iterator(): 返回-个Iterator 对象,用于遍历集合里的元素。
➢boolean remove(Object o): 删除集合中的指定元素o,当集合中包含了一一个或多个元素o时,该方法只删除第一一个符合条件的元素,该方法将返回true.
➢boolean removeAll(Collction c):从集合中删除集合c里包含的所有元素(相当于用调用该方法的集合减集合c),如果删除了一个或一一个以上的元素,则该方法返回true。
➢boolean retainAll(Collction c): 从集合中删除集合c里不包含的元素(相当于把调用该方法的集合变成该集合和集合c的交集),如果该操作改变了调用该方法的集合,则该方法返回true.
➢int size(); 该方法返回集合里元素的个数。
➢Object[] toArray(): 该方法把集合转换成-个数组,所有的集合元素变成对应的数组元素。
二、Map接口
1 |
void clear( ) |
从此映射中移除所有映射关系(可选操作)。 |
2 |
boolean containsKey(Object k) |
如果此映射包含指定键的映射关系,则返回 true。 |
3 |
boolean containsValue(Object v) |
如果此映射将一个或多个键映射到指定值,则返回 true。 |
4 |
Set entrySet( ) |
返回此映射中包含的映射关系的 Set 视图。 |
5 |
boolean equals(Object obj) |
比较指定的对象与此映射是否相等。 |
6 |
Object get(Object k) |
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 |
7 |
int hashCode( ) |
返回此映射的哈希码值。 |
8 |
boolean isEmpty( ) |
如果此映射未包含键-值映射关系,则返回 true。 |
9 |
Set keySet( ) |
返回此映射中包含的键的 Set 视图。 |
10 |
Object put(Object k, Object v) |
将指定的值与此映射中的指定键关联(可选操作)。 |
11 |
void putAll(Map m) |
从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
12 |
Object remove(Object k) |
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
13 |
int size( ) |
返回此映射中的键-值映射关系数。 |
14 |
Collection values( ) |
返回此映射中包含的值的 Collection 视图。 |
三、java Stack类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
1 |
boolean empty() |
测试堆栈是否为空。 |
2 |
Object peek( ) |
查看堆栈顶部的对象,但不从堆栈中移除它。 |
3 |
Object pop( ) |
移除堆栈顶部的对象,并作为此函数的值返回该对象。 |
4 |
Object push(Object element) |
把项压入堆栈顶部。 |
5 |
int search(Object element) |
返回对象在堆栈中的位置,以 1 为基数。 |
四、Queue
1 |
void add(Object e) |
将指定元素加入此队列的尾部。 |
2 |
boolean offer(Object e) |
将指定元素加入此队列的尾部。 |
3 |
Object poll() |
获取队列头部元素,并删除该元素。 |
4 |
Object remove() |
获取队列头部元素,并删除该元素。 |
5 |
Object peek() |
获取队列头部元素,但是不是删除该元素。 |
区别:
1.offer,add区别:
一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。
2.poll,remove区别:
remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似,但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。
3.peek,element区别:
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。
五、 Java 8改进的List接口
List作为Collection接口的子接口,当然可以使用Collection 接口里的全部方法。而且由于List 是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。
1.➢void add(int index, Object element) :将元素element插入到List集合的index处。
2.➢boolean addAll(int index, Collection c) : 将集合c所包含的所有元素都插入到List集合的index处。
3.➢Object get(int index) :返回集合index 索引处的元素。
4.➢int indexOf(Object o) :返回对象o在List集合中第一次出现的位置索引。
5.➢int lastIndexOf(Object o) :返回对象o在List集合中最后-次出现的位置索引。
6.➢Object remove(int index) :删除并返回index索弓|处的元素。
7.➢Object set(int index, Object element) :将index索引处的元素替换成element对象,返回被替换的旧元素。
8.➢List subList(int fromIndex, int toIndex) :返回从索引fromIndex (包含)到索引toIndex (不包含)处所有集合元素组成的子集合。所有的List实现类都可以调用这些方法来操作集合元素。与Set集合相比,List 增加了根据索引来插入、替换和删除集合元素的方法。除此之外,Java 8还为List接口添加了如下两个默认方法。
9.➢void replaceAl(UnaryOperator operator) :根据operator指定的计算规则重新设置List集合的所有元素。
10.➢void sort(Comparator c) ;根据Comparator参数对List集合的元素排序。
以上是关于java集合-map和queue的方法的主要内容,如果未能解决你的问题,请参考以下文章