JDK源码-Collection-remove()以及removeAll()

remove()


再让我们来看一个处理与contains非常相似的方法,那就是remove()方法。源码如下:

public boolean remove(Object o) {
        Iterator<E> it = iterator();
        if (o==null) {
            while (it.hasNext()) {
                if (it.next()==null) {
                    it.remove();
                    return true;
                }
            }
        } else {
            while (it.hasNext()) {
                if (o.equals(it.next())) {
                    it.remove();
                    return true;
                }
            }
        }
        return false;
}

这块处理其实都是采用的迭代,Collection继承了Iterator,当然还有很多类继承了Collection,并对他的方法进行了重写。我们先了解父类的方法之后,后面我们会对个各子类中方法进行介绍。

removeAll()

直接看源码:

public boolean removeAll(Collection<?> c) {
        Objects.requireNonNull(c);
        boolean modified = false;
        Iterator<?> it = iterator();
        while (it.hasNext()) {
            if (c.contains(it.next())) {
                it.remove();
                modified = true;
            }
        }
        return modified;
    }

和containsAll原理一样,通过迭代来的,只要对象包含在collection中就remove掉这个对象。之后就返回值定义成true。

细心的人会发现,remove这个方法全部用的迭代(Iterator),

1.为什么不用for循环呢?

因为如果collection有下标,例如list(i),你一边remove,list的下标也是会发生变化的,所以,remove不用for会出错的。

2.为什么不用foreach?

没有为什么,人家就是选择了这个而已,别想太多。foreach循环就是用的iterator,foreach循环编译后还是被转成了iterator。




### 回答1: jdk-11.0.6_doc-all是Java开发工具包(Java Development Kit,简称JDK)的一个版本,它是Oracle公司为Java开发者提供的一套开发工具。JDK 11.0.6是JDK 11系列中的一个小版本更新,是对JDK 11的一次改进和修复。 JDK是Java开发者必备的工具,提供了编译、调试、运行Java程序所需的各种工具和库。它包含了Java编译器(javac)用于将Java源代码编译成可以在Java虚拟机(JVM)上运行的字节码文件。同时,JDK还提供了Java运行环境(JRE),包括Java虚拟机和Java类库,用于执行Java程序。 在JDK 11.0.6中,除了包含了JDK 11的所有功能外,还对一些已知的问题和bug进行了修复,提高了性能和稳定性。此外,它还支持新的特性和功能,如对Java 11的新语法和API的支持。 使用JDK 11.0.6进行Java开发,可以享受到JDK 11带来的一系列优势和新特性。例如,JDK 11引入了本地变量类型推断(var关键字),提高了代码的简洁性和可读性;它还引入了可作为垃圾收集器的ZGC,提供了更低的延迟和更高的吞吐量。此外,JDK 11还提供了对HTTP/2和WebSocket的原生支持,以及对可重复注解和动态类文件常量的增强。 综上所述,jdk-11.0.6_doc-all是Java开发工具包的一个版本,它基于JDK 11,提供了一系列开发Java应用程序所需的工具和库。通过使用JDK 11.0.6,开发者可以充分利用JDK 11的新特性和功能,提高开发效率并获得更好的性能和稳定性。 ### 回答2: JDK-11.0.6_doc-all是Java Development Kit(JDK)的一个版本。JDK是一种供开发人员使用的软件开发工具包,用于创建、编译、运行和调试Java应用程序。 JDK-11.0.6_doc-all是Java SE 11的一个版本。它包含了Java SE 11的完整文档,包括开发者指南、API文档和技术文档等。这些文档提供了关于Java SE 11的详细信息和使用说明。 开发者指南是JDK-11.0.6_doc-all的重要部分。它提供了关于Java编程的基本知识和核心概念的介绍,以及使用JDK开发Java应用程序的指导。开发者指南帮助开发人员了解如何使用JDK提供的工具和功能来创建高效、可靠和安全的Java应用程序。 API文档也是JDK-11.0.6_doc-all中的关键组成部分。它提供了关于Java SE 11提供的各种类、接口、方法和常量的详细信息。开发人员可以通过查看API文档来了解每个类的用途、属性和方法的功能以及使用方式。API文档对于开发Java应用程序时的编码和调试非常有帮助。 技术文档是JDK-11.0.6_doc-all中的补充内容,提供了有关JDK的详细技术信息和使用建议。技术文档包括了一些高级主题,如Java虚拟机(JVM)调优、并发编程和性能优化等。这些文档能帮助开发人员更好地利用JDK的功能和特性,以提高Java应用程序的性能和可靠性。 综上所述,JDK-11.0.6_doc-all是一个集成了Java SE 11文档的开发工具包。它提供了开发者指南、API文档和技术文档等内容,帮助开发人员更好地理解和使用Java SE 11,以开发出高质量的Java应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值