当前位置: 首页 > news >正文

java集合深入理解(二):Collection接口的特点与理解

(一)Collection接口的特点

Collection接口没有自己的实现类,具体的实现类都在他的子接口中,如List和Set。Collection中提供了一系列操作集合的方法,比如增加、删除等等,对于Collection中提供的方法,可以在官方文档中查阅(java PlatForm SE 8),

(二)Collection的常用方法

Collection提供的方法并不多,这里介绍一下常用的几个:

public class TestMethod {
    public static void main(String[] args) {
        //创建collection子接口的对象,这里用ArrayList
        Collection collection=new ArrayList();
        
        //method1.add
        collection.add("zhangsan");
        collection.add(18);
        System.out.println(collection);
        
        //method2.addall
        Collection collection2=new ArrayList();
        collection2.addAll(collection);
        System.out.println(collection2);
        
        //method3.contains
        boolean contains = collection.contains(18);
        System.out.println(contains);
        
        //method4.containsAll
        boolean containsall = collection.containsAll(collection2);
        System.out.println(containsall);
        
        //method5.isEmpty
        System.out.println(collection.isEmpty());
        
        //method6.remove
        collection.remove(18);
        System.out.println(collection);
        
        //method7.size
        System.out.println(collection.size());
        
        //method8.clear
        collection.clear();
        System.out.println(collection);
    }
}

需要注意的是Collection的遍历,Collection继承了Iterable接口,使得它可以通过迭代器来遍历元素。迭代器的遍历有三步:

Collection collection=new ArrayList();
collection.add("zhangsan");
collection.add(18);
collection.add("lisi");
//1.获取迭代器对象,此时迭代器指向集合最上面元素的上一位
Iterator iterator=collection.iterator();
//2.使用hasNext()判断下一位还有没有对象
while (iterator.hasNext()){
//3.使用next()遍历
    System.out.println(iterator.next());
}

为了简化语法也可以用增强for遍历集合,增强for本质上就是迭代器

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

在迭代过程中。不能通过集合的remove去删除对象集合,不然就会报ConcurrentModificationException错误。如果一定要在迭代中删除元素,建议使用迭代器自带的remove方法删除

(三)总结

Collection这个接口的介绍比较简单,但是它的子接口及其实现类就很需要很好的掌握,接下来就将详细介绍List接口。

相关文章:

  • Msc系统上的eclipse遇到乱码问题解决方式
  • java集合深入理解(三):ArrayList、Vector、LinkedList的底层源码分析和对比
  • java集合深入理解(四):Set接口及其实现类HashSet、TreeSet的底层结构与区别
  • WPS for Linux(ubuntu)字体配置(字体缺失解决办法)
  • java集合深入理解(五):HashMap、HashTable、TreeMap的底层源码分析和对比
  • java核心基础之java反射机制详解
  • Android Pdf文档的生成、显示与打印
  • java核心基础之代理机制详解(静态代理、动态代理:JDK、CGlib)
  • Spring事务管理详解(传播属性、隔离级别)
  • 5分钟学会使用Less预编译器
  • RabbitMQ学习系列(一):RabbitMQ的了解安装和使用
  • RabbitMQ学习系列(二):简单队列详解
  • spring学习笔记(4)依赖注入详解
  • RabbitMQ学习系列(三):工作队列详解
  • RabbitMQ学习系列(四):发布-订阅模型详解
  • [LeetCode] Wiggle Sort
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • angular2开源库收集
  • Brief introduction of how to 'Call, Apply and Bind'
  • C++入门教程(10):for 语句
  • CentOS 7 修改主机名
  • Java 多线程编程之:notify 和 wait 用法
  • Python连接Oracle
  • Quartz初级教程
  • sessionStorage和localStorage
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 使用Gradle第一次构建Java程序
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • const的用法,特别是用在函数前面与后面的区别
  • # centos7下FFmpeg环境部署记录
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (TOJ2804)Even? Odd?
  • (ZT)出版业改革:该死的死,该生的生
  • (层次遍历)104. 二叉树的最大深度
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (剑指Offer)面试题34:丑数
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (一)kafka实战——kafka源码编译启动
  • (一)基于IDEA的JAVA基础1
  • ***原理与防范
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net core 的缓存方案
  • .Net Core 中间件与过滤器
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET Core中的去虚
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET的数据绑定