Collection 接口及其常用方法

这篇具有很好参考价值的文章主要介绍了Collection 接口及其常用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Collection 接口的特点

Collection接口没有直接实现类,提供了更具体的子接口(如SetList)的实现。Collection实现类(通常通过其中一个子接口间接实现Collection)可以存放多个 Object 类型的元素。有些Collection接口的实现类可以存放重复的元素(List),有些则不可以(Set)。有些Collection接口的实现类是有序的(List),有些是无序的(Set)。

所有通用的Collection实现类都会提供两个"标准"构造方法:一个无参构造方法,来创建一个空的集合;以及一个带有单个Collection类型参数的构造方法,创建一个与参数集合具有相同元素的新集合。实际上,后一种构造方法可以复制任何集合,生成一个与参数集合元素相同的所需类型的集合。

public class CollectionConstructors() {
  public static void main(String[] args) {
    ArrayList list = new ArrayList();
    System.out.println("list = " + list); // list = []
	
	list.add(1);
	list.add(2);
	list.add(3);
	System.out.println("list = " + list); // list = [1, 2, 3]

	Vector<Object> vector = new Vector<>(list);
	System.out.println("vector = " + vector);  // vector = [1, 2, 3]
  }
}

Collection 接口常用方法

下面的代码以其间接实现类ArrayList演示Collection接口的常用方法。

public class CollectionMethod() {
  public static void main(String[] args) {
    Collection collection = new ArrayList<>();
    
    // boolean add(E e)
    // 给集合中添加指定的元素,添加成功则返回 true。如果此集合不允许重复元素并且已经包含了指定的元素,
    // 则返回 false。支持此操作的实现类可能会对添加到该集合中的元素进行限制。如果一个集合拒绝添加某个
    // 特定元素的原因不是因为集合已经包含该元素,会抛出一个异常(而不是返回 false)。
    collection.add("hello");
    collection.add(10);
    collection.add(true);
    System.out.println("collection = " + collection); // collection = [hello, 10, true]
    
    // boolean remove(Object o)
    // 从集合中移除指定元素的一个实例。如果集合包含多个满足 (o==null ? e==null : o.equals(e))条件的元素 e,
    // 则移除第一个元素 e。移除完成后返回 true。
    collection.remove("hello");
	System.out.println("collection = " + collection); // collection = [10, true]
    
    // boolean contains(Object o)
    // 如果此集合包含指定元素,则返回 true。更准确地说,当且仅当此集合包含至少
    // 一个满足(o==null ? e==null : o.equals(e))条件的元素 e 时,返回 true。
    System.out.println(collection.contains(10));// true
    
    // int size()
    // 返回此集合中的元素数量
    System.out.println(collection.size());// 2
    
    // boolean isEmpty()
    // 判断集合是否为空
    System.out.println(collection.isEmpty());// false
    
    // void clear()
    // 清空集合中的元素
    collection.clear();
    System.out.println("collection = " + collection); // collection = []
    
    // boolean addAll(Collection<? extends E> c)
    // 将指定集合中的所有元素添加到此集合中
    Collection collection1 = new ArrayList();
    collection1.add("Mary");
    collection1.add("Luck");
    collection.addAll(collection1);
    System.out.println("collection = " + collection); // collection = [Mary, Luck]
   
    // boolean containsAll(Collection<?> c)
    // 判断此集合是否包含指定集合中的所有元素
    System.out.println(collection.containsAll(collection1));// true

    // boolean removeAll(Collection<?> c)
    // 从此集合中移除与指定集合中相同的所有元素。在此调用返回后,此集合将不包含与指定集合共有的任何元素。
    collection.add("King");
    collection.removeAll(collection1);
    System.out.println("collection = " + collection); // collection = [King]
  }
}

Collection 接口遍历元素方式

使用 Iterator(迭代器)

Iterator接口是集合的迭代器,主要用于遍历Collection集合中的元素。所有实现了Collection接口的实现类,都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器。

Iterator接口的方法:

// 判断是否还有下一个元素
boolean hasNext()
  
// 返回集合中的下一个元素
E next()

// 从底层集合中移除此迭代器返回的最后一个元素。每次调用 next() 只能调用此方法一次。
// 如果在调用此方法之前尚未调用过 next() 方法,或者在最后一次调用 next() 方法之后
// 已经调用了过一次 remove() 方法,则抛出 IllegalStateException 异常。
default void remove() 

// 对剩余的每个元素执行给定的操作,直到所有元素被处理完或操作抛出异常为止。
default void forEachRemaining(Consumer<? super E> action)

迭代器的使用示例代码:

public class CollectionIterateor() {
  public static void main(String[] args) {
    Collection col = new ArrayList();
    col.add("红楼梦");
    col.add("西游记");
    col.add("三国演义");
    col.add("水浒传");

    // 遍历 col 集合
    // 先获得 col 对应的迭代器
    Iterator iterator = col.iterator();
    // 使用 while 循环遍历
    while (iterator.hasNext()) {// 判断是否还有元素
      Object obj = iterator.next(); // 返回下一个元素,类型是 Object
      System.out.println("obj = " + obj);
    }
    
    // 当退出 while 循环后,iterator 迭代器指向最后一个元素
    // 此时再调用 next() 会抛出 NoSuchElementException 异常
    // iterator.next();
    
    // 如果需要再次遍历,需要重制迭代器。
    System.out.println("===第二次遍历===");
    iterator = col.iterator();
    while (iterator.hasNext()) {
      Object obj = iterator.next();
      System.out.println("obj = " + obj);
    }
  }
}

当迭代器中不存在下一个元素时,直接调用 iterator.next() 方法会抛出 NoSuchElementException 异常,所以调用 iterator.next() 方法之前需要调用 iterator.hasNext() 方法。

增强 for 循环

增强 for 循环是简化版的 iterator,本质一样,只能用来遍历集合或数组。基本语法如下:文章来源地址https://www.toymoban.com/news/detail-478137.html

for(元素类型 元素名 : 集合名或数组名){
	访问元素;
}
public class EnhancedFor() {
  public static void main(String[] args) {
    Collection collection = new ArrayList();

    collection.add("mary");
    collection.add(true);
    collection.add(10);

    for (Object o : collection) {
      System.out.println("o = " + o);
    }
  }
}

到了这里,关于Collection 接口及其常用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Collection集合】概述、使用以及常用方法

    1.Collection集合的概述 它是单列集合的顶级接口,它表示一组对象,这些对象也称为Collection的元素 JDK不提供此接口的任何直接实现,它提供更具体地子接口(如set和list)实现 2.创建Collection集合的对象 多态的方式 具体的实现类ArrayList,在java.util包下需要导包 向集合里添加元

    2024年02月08日
    浏览(41)
  • 【Java基础教程】(四十八)集合体系篇 · 上:全面解析 Collection、List、Set常用子接口及集合元素迭代遍历方式~【文末送书】

    掌握 Java 设置类集的主要目的以及核心接口的使用; 掌握 Collection 接口的作用及主要操作方法; 掌握 Collection 子接口 List、Set 的区别及常用子类的使用; 掌握 Map 接口的定义及使用; 掌握集合的4种输出操作语法结构; 掌握 Properties类的使用 ; 了解类集工具类 Collections 的作

    2024年02月15日
    浏览(57)
  • STL常用梳理——VECTOR常用接口及其迭代器实现

    vector是STL中容器之一,特性如下: vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自

    2024年02月05日
    浏览(49)
  • C++:stl:list的常用接口及其模拟实现

    本文主要介绍c++:stl中list常用接口的功能及使用方法,比较list与vector的区别,并对list的常用接口进行模拟实现。 目录 一、list的介绍和使用 1.list介绍 2.list使用 1.list的构造 2.list iterator的使用 3.list 容量相关 4.list元素访问 5.list修改 6.list的迭代器失效 二、list的模拟实现 1.l

    2024年02月07日
    浏览(52)
  • 目标检测常用评价指标及其计算方法

    前传耗时(ms) :从输入一张图像到输出最终结果所消耗的时间,包括前处理耗时(如图像归一化)、网络前传耗时、后处理耗时(如非极大值抑制); 每秒帧数FPS(Frames Per Second) :每秒中能处理的图像数量; 浮点运算量(FLOPS) :处理一张图像所需要的浮点运算数量,跟具体软

    2024年02月06日
    浏览(51)
  • 【多线程】认识Thread类及其常用方法

    📄 前言 : 本文是对以往多线程学习中 Thread类 的介绍,以及对其中的部分细节问题进行总结。 之前的文章介绍过线程的引入能够更好地处理程序的并发执行问题。在Java中,线程的创建方式之一是通过 Thead类 (Thead封装了操作系统提供的API,使我们创建的线程能够系统的调

    2024年01月18日
    浏览(38)
  • Collection接口详细介绍(上)

    前言: 本篇文章主要讲解 Java中的Collection接口以及相关实现类 的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了😁 以下正文开始 Java中的集合

    2024年02月11日
    浏览(42)
  • 【JavaEE】_多线程Thread类及其常用方法

    目录 1. Thread类常用构造方法 2. Thread类的几个常见属性 3. 启动一个线程 4. 中断一个线程 4.1 方法1:手动设置标志位 4.2 方法2:使用Thread内置的标志位 5. 等待一个线程 6. 获取当前线程引用 7. 休眠当前线程 方法 说明 Thread() 创建线程对象 Thread(Runnable target) 使用Runnable对象创建

    2024年02月20日
    浏览(39)
  • 常用中间件redis,kafka及其测试方法

    一、中间件的使用场景 引入中间件的目的一般有两个: 1、提升性能 产品架构中的性能设计: 常用的中间件: 1) 高速缓存:redis 基于内存,所以比mysql块(存在磁盘io) 为什么查询速度快? 单进程+IO多路复用去提高性能 基于内存 做缓存,极大缓解了数据库压力 非常适合

    2024年04月11日
    浏览(54)
  • 容器——2.Collection 子接口之 List

    ArrayList 是 List 的主要实现类,底层使用 Object[ ] 存储,适用于频繁的查找工作,线程不安全 ; Vector 是 List 的古老实现类,底层使用 Object[ ] 存储,线程安全的。 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 底层数据结构: Arraylist 底层使

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包