首页 > 其他分享 >Collection 接口及其常用方法

Collection 接口及其常用方法

时间:2023-06-10 18:45:57浏览次数:44  
标签:常用 Collection 元素 collection println add 接口 集合

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,本质一样,只能用来遍历集合或数组。基本语法如下:

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,元素,collection,println,add,接口,集合
From: https://www.cnblogs.com/echo97/p/17471738.html

相关文章

  • Linux常用命令
    以下是常用的Linux命令:1.ls:列出目录中的文件和子目录。2.cd:切换当前目录。3.pwd:显示当前工作目录的完整路径。4.mkdir:创建一个新的目录。5.rm:删除文件或目录。6.cp:复制文件或目录。7.mv:移动文件或目录,也可以用于重命名文件或目录。8.cat:显示文件内容。9.less:......
  • node.js详细介绍,node.js常用面试题
    Node.js是一个基于ChromeV8引擎的JavaScript运行时,可以让JavaScript在服务器端运行,实现了JavaScript的后端开发能力。Node.js采用事件驱动、非阻塞I/O模型,可以处理大量并发连接,适合构建高性能、可扩展的网络应用程序。以下是一些常见的Node.js面试题:1.什么是No......
  • 9.9 接口定义标准
    interfaceIUSB{publicbooleancheck();publicvoidwork();}classComputer{publicvoidplugin(IUSBusb){//电脑上使用USB设备---??什么格式if(usb.check()){usb.work();}else{System.out.println("硬件设......
  • 【阿里巴巴中国站API接口系列】获得1688商品详情信息-item_get-获得1688商品详情调用
    ​    1688有开放商品详情API接口,使用前需要注册成为开发者并申请API权限。以下是简单的API使用步骤:1. 获取授权key和secret:在开放平台注册获取key和secret接入。2. 构建请求:通过API接口文档构建请求,包括传递必要参数和权限设置等。3. 发送请求:使用HTTP GET或POS......
  • Python数据分析库pandas高级接口dt和str的使用
    Series对象和DataFrame的列数据提供了cat、dt、str三种属性接口(accessors),分别对应分类数据、日期时间数据和字符串数据,通过这几个接口可以快速实现特定的功能,非常快捷。本文重点介绍和演示dt和str的用法。DataFrame数据中的日期时间列支持dt接口,该接口提供了dayofweek、dayofyear、......
  • UE4常用快捷键及快捷方法
    隐藏显示H/SHIFT+H快速复制ALT+鼠标左键(在平移对象时)视角变换鼠标左键/鼠标右键/鼠标滚轮+W/A/S/D/Q/E框选对象CTRL+ALT+鼠标左键......
  • 9.8 接口定义加强
    default,static不可作为主要的设计模式,这个只是补救措施。demo1接口中追加普通方法接口定义方法加上default,子类实现就不是非得覆写了interfaceIMessage{publicStringmessage();//抽象方法,abstract省略,获取消息内容publicdefaultbooleanconnect(){//加上......
  • Python正则表达式常用flag含义与用法详解
    Python正则表达式模块re中很多函数都支持一个flag参数,用来对正则表达式进行补充说明,例如findall(pattern,string,flags=0)match(pattern,string,flags=0)search(pattern,string,flags=0)sub(pattern,repl,string,count=0,flags=0)split(pattern,string,maxsplit=0,fla......
  • Python 3.x对MySQL数据库的常用操作
    首先安装MySQL,然后使用pipinstallpymysql安装扩展库,最后执行下面的代码。运行结果:公众号“Python小屋”......
  • 常用Python标准库对象速查表(1)
    封面图片:《Python程序设计基础(第2版)》,董付国,清华大学出版社===============常用Python标准库对象速查表(1)标准库对象简要说明mathsin(x)、cos(x)、tan(x)正弦函数、余弦函数、正切函数,参数单位为弧度asin(x)、acos、atan(x)反正弦函数、反余弦函数、反正切函数ceil(x)、floor(x)向上......