欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java集合框架(一)Collection与Map的操作

程序员文章站 2022-03-09 08:13:18
前言我们写程序会经常用到一组类型相同的对象,可以使用数组来集中存放这些类型相同的对象,但数组一经定义边不能改变大小。因此,Java提供了一个集合框架,该框架定义了一组接口和类,使得处理对象组更容易。集合框架图如下,先做一个大概的了解,下文会有一些简化版的帮助你理解接口继承关系Collection和Map是最基本的接口,它们的子接口如图1.Collection接口是所有集合类型的根接口,它有三个子接口:①Set接口:不能含有重复的元素,无序。②List接口:是一种线性表的数据结构,允许重复,...

前言

我们写程序会经常用到一组类型相同的对象,可以使用数组来集中存放这些类型相同的对象,但数组一经定义边不能改变大小。因此,Java提供了一个集合框架,该框架定义了一组接口和类,使得处理对象组更容易。
集合框架图如下,先做一个大概的了解,下文会有一些简化版的帮助你理解
Java集合框架(一)Collection与Map的操作

接口继承关系

Collection和Map是最基本的接口,它们的子接口如图
Java集合框架(一)Collection与Map的操作

1.Collection接口是所有集合类型的根接口,它有三个子接口:

Set接口:不能含有重复的元素,无序。
List接口:是一种线性表的数据结构,允许重复,维护元素插入顺序。
Queue接口:是先进先出的方式排列其元素(类似于排队,先排先办事),一般称为队列

集合 有序性 重复性 访问方式
List 有序 可重复 元素的索引
Set 无序 不可重复 元素本身
Queue 有序 可重复 访问队首或队尾

(1)基本操作

实现基本操作的方法有添加元素、删除指定元素、返回集合中元素的个数、返回集合的迭代器对象

操作 解释
boolean add(E e) 向集合中添加元素e
boolean remove(Object o) 从集合中删除指定元素o
boolean contains(Object o) 返回集合中是否包含指定元素o
boolean isEmpty() 返回集合是否为空,即不包含元素
int size 返回集合中包含的元素个数
Iterator iterator() 返回包含所有元素的迭代器对象
default void forEach(Consumer<?super T>action) 从父接口继承的方法,在集合的每个元素上执行指定的操作

(2)批量操作

操作 解释
boolean addAll(Collection<? extends E> c) 将集合c中的所有元素添加到当前集合中
boolean removeAll(Collection<?> c) 从当前集合中删除c中的所有元素
default boolean removeIf(Predicate<? super E> filter) 从当前集合中删除满足谓词的所有元素
boolean containsAll(Collection<?> c) 返回当前集合是否包含c中的所有元素
boolean retainAll(Collection<?> c) 在当前集合中只保留指定集合c中的元素,其他元素删除
voif clear() 将集合清空

(3)数组操作

操作 解释
Object[] toArray() 返回包含集合中所有元素的对象数组
< T> T[] toArray(T[] a) 返回包含集合中所有元素的数组,返回数组的类型是指定的数组类型

示例1:
将c中的对象转换成一个新的Object数组a

Object[] a =c.toArray();

示例2:
将只包含String对象的c,转换成String数组

String[] a = c.toArray(new String[0]);

(4)流(Stream)操作方法

Stream API是Java8新增的功能,称为流API。可以在集合上创建一个Stream对象,然后在其上执行有关操作

操作 解释
public default Stream< E> stream() 以当前集合作为源返回一个顺序Stream对象
public default Stream< E> paralellStream() 以当前集合作为源返回一个并行Stream对象

2.Map接口常用的实现类有HashMap类、TreeMap类、Hashtable类和LinkedHashMap类

(1)基本操作

操作 解释
public V put(K key,V value) 向映射对象中添加一个“键/值” 对
public V get(Object key) 返回指定键的值
public V remove(Object key) 从映射中删除指定键的“键/值”对
public boolean containsKey(Object key) 返回映射中是否包含指定的值
public boolean containsValue(Object value) 返回映射中是否包含指定的值
default V replace(K key,V value) 若指定的“键/值”对存在于映射中,用指定的“键/值”对替换之
default void forEach(BiConsumer<? super K,?super V>) 对映射中的每项执行一次动作,直到所有项处理完或发生异常
public int size() 返回映射中包含的“键/值"对个数
public boolean isEmpty() 返回映射是否为空

(2)批量操作

操作 解释
public void putAll(Map<? extends K,? Extends V>map) 将参数map中的所有“键/值”对添加到映射中
public void clear() 删除映射中所有“键/值”对
public Set< K>keySet() 返回由键组成的Set对象
public Collection< V>values() 返回由值组成的Collection对象
public Set<Map.Entry<K,V>>entrySet() 返回包含Map.Entry<K,V>的一个Set对象

未完待续。。。后面将继续对每个接口做详细的介绍并在本文附上超链接

本文地址:https://blog.csdn.net/Rex__404/article/details/110792354