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