首页 > 编程语言 >【数据结构与算法】Collection接口&迭代器

【数据结构与算法】Collection接口&迭代器

时间:2023-01-07 10:01:30浏览次数:32  
标签:返回 迭代 方法 元素 Collection 接口 数据结构 合集

Java合集框架

数据结构是以某种形式将数据组织在一起的合集(collection)。数据结构不仅存储数据,还支持访问和处理数据的操作

在面向对象的思想里,一种数据结构也被认为是一个容器(container)或者容器对象(container object),它是一个能存储其他对象的对象,这里的其他对象常被称为数据或者元素

定义一种数据结构从实质上讲就是定义一个类。数据结构类应该使用数据域存储数据,并提供方法支持查找、插入和删除等操作

Java 提供了很多能有效地组织和操作数据的数据结构。这些数据结构通常称为 Java 合集框架(Java Collections Framework

Collection接口

Collection 接口为线性表、向量、栈、队列、优先队列以及集合定义了共同的操作

Set 和 List 是 Collection 的子接口

下面是实现 Collection 的子接口、实现子接口的抽象类以及后面的具体类

【数据结构与算法】Collection接口&迭代器_Java

Collection 接口中定义了以下方法:

方法及返回类型

描述

​add(o: E) : boolean​

添加一个新的元素 o 到合集中

​addAll(c: Collection<? extends E>) : boolean​

将合集 c 中的所有元素添加到该合集中

​clear() : void​

从该合集删除所有元素

​contains(o: Object) : boolean​

如果该合集包含元素 o,则返回 true

​containsAll(c : Collection<?>) : boolean​

如果该合集包含 c 中所有的元素,则返回 true

​equals(o: Object) : boolean​

如果该合集等同于另外一个合集 o,则返回 true

​hashCode() : int​

返回该合集的哈希码

​isEmpty() : boolean​

如果该合集没有包含元素,则返回 true

​remove(o: Object) : boolean​

从该合集中移除元素 o

​removeAll(c: Collectioin<?>) : boolean​

从该合集中移除 c 中的所有元素

​retainAll(c: Collectioin<?>) : boolean​

保留同时位于 c 和该合集中的元素

​size() : int​

返回该合集中的元素数目

​toArray() : Object[]​

为该合集中的元素返回一个 Object 数组

Collection 接口提供了在集合中添加与删除元素的基本操作。add 方法给合集添加一个元素,addAll 方法把指定合集中的所有元素添加到这个合集中,remove 方法从元素中删除一个元素,removeAll 方法从这个合集中删除指定合集中的所有元素,retainAll 方法保留既出现在这个合集中也出现在指定合集中的元素。所有这些方法都返回 boolean 值,如果执行方法改变了这个合集,那么返回值为 trueclear 方法简单地移除合集中的所有元素

方法 addAllremoveAllretainAll 类似于集合上的并、差、交运算

Collection 接口提供了多种查询操作,方法 size 返回合集中元素的个数,方法 contains 检测合集中是否包含指定的元素,方法 containsAll 检测这个合集中是否包含指定合集中的所有元素。如果合集为空,方法 isEmpty 返回 true

Collection 接口的 toArray 方法返回一个合集的数组表

迭代器

每种合集都是可迭代的(Iterable),可以获得合集的 Iterator 对象来遍历合集中的所有元素

Iterator 是一种经典的设计模式,用于在不需要暴露数据是如何保存在数据结构的细节的情况下,来遍历一个数据结构

Iterable 接口中定义了以下方法:

方法及返回类型

描述

​iterator() : Iterator<E>​

为该合集中的元素返回一个迭代器

Iterator 接口中定义了以下方法:

方法及返回类型

描述

​hasNext() : boolean​

如果该迭代器还要遍历更多元素,则返回 true

​next() : E​

返回该迭代器中的下一个元素

​remove() : void​

移除使用 next 方法获取的上一个元素

Collection 接口继承自 Iterable 接口,Iterable 接口定义了 iterator 方法,该方法会返回一个迭代器

而 Iterator 接口为遍历各种类型的合集中的元素提供了一种统一的方法,Iterator 接口中的 iterator() 方法会返回一个 Iterator 的实例,这个实例可以使用 next() 方法对合集中的元素进行顺序访问,使用 hasNext() 方法来检测迭代器中是否还有更多的元素,以及使用 remove() 方法来移除迭代器返回的最后一个元素

写一个案例感受一下迭代器的魅力

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class TestIterator {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("Hello");
collection.add("World");
collection.add("Java");

//遍历方法一
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next().toUpperCase());
}

//遍历方法二
for (String c : collection) {
System.out.println(c.toUpperCase());
}
}
}

运行结果如下

【数据结构与算法】Collection接口&迭代器_Java_02

标签:返回,迭代,方法,元素,Collection,接口,数据结构,合集
From: https://blog.51cto.com/u_15733182/5995405

相关文章

  • Python 迭代器Iterator详情
    1.什么是迭代器?迭代器是一个表示数据流的对象,当我们调用next()方法时会返回容器中的下一个值迭代器中包含__iter__和__next__()方法。通过__iter__方法可以返回迭代器......
  • 理解HashMap底层数据结构
    文章目录​​`hash`​​​​常用解决哈希冲突方法​​​​链地址法​​​​开放地址法​​​​`array`​​​​链表​​​​红黑树​​​​`HashMap`​​​​参考文章​​在......
  • 二叉树的统一迭代法
    二叉树的统一迭代法要想统一写法就要:将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记。如何标记呢,就是要处理的节点放入栈之后,紧接着放入一个空指针作为标记......
  • QFramework v1.0 使用指南 工具篇:15. 补充内容:GridKit 二维格子数据结构
    在做游戏的过程中,我们经常需要处理二维格子类的数据,比如消除类游戏、俄罗斯方块、各种棋类游戏,还有我们最常用的Tilemap的地块数据,这些都需要二维格子数据结构。而在Ga......
  • python-内建函数-多迭代对象聚合
    1.python-内建函数-多迭代对象聚合zip()函数:对多个可迭代对象创建一个聚合,返回一个元组的迭代器示例:x=[1,2,3]y=[4,5,6]zipped=zip(x,y)print(list(zippe......
  • 数据结构:ST表 学习笔记
    ST表RMQ问题RMQ是英文RangeMaximum/MinimumQuery的缩写,表示区间最大(最小)值。ST表是用于解决离线RMQ问题的一种线性数据结构,在全国青少年信息学奥林匹克系列竞......
  • dataframe数据结构之数据的筛选
    导入模块importpandasaspd案例数据my_dict={'姓名':['张三','李四','王二','六月','北海'],'年龄':[23,27,26,22,18],'性别':['男......
  • 数据结构
    数据结构:操作对象和操作对象之间的关系1、操作对象为数值对象例:长方形S=ab面积计算公式操作对象:S\a\b对象关系:S=ab特点:数据元素的关系简单,计算复杂,因......
  • 可迭代对象以及迭代器的说明
    可迭代对象通过iter(),转化为迭代器对象,迭代器可以使用next()访问,可迭代对象不能直接使用next();迭代器是一个可以记住遍历的位置的对象,所以可以方便的使用next()。可迭......
  • 数据结构和算法
    栈和队列的定义和特点栈和队列是两种常用的、重要的数据结构栈和队列是限定插入和删除只能在表的“端点”进行的线性表(栈和队列是线性表的子集)栈的应用栈的操作具有......