集合源码解读----addAll方法

addAll这个集合方法如何使用 addAll是集合中的一种方法,它可以将一个集合中的所有元素添加到另一个集合中。该方法主要是用于合并多个集合中的元素,有效地避免了手动添加集合元素的工作。第二种形式表示将集合c添加到当前集合中的指定位置。这个方法的参数index表示要插入c集合的位置。返回一个布尔值,用于指示当前集合是否发生了更改。其中第一种形式表示将集合c添加到当前集合中。这个方法返回一个布尔值,用于指示当前集合是否发生了更改。这个例子中,将list1和list2两个集合中的所有元素都添加到了list1中,并输出了结果。 阅读详情

在多次写测试demo时,在初始化List时,总是很麻烦,需要多次调用add方法,

List是提供 addAll(Collection<? extends E> c)方法的,其实现是将集合c转为Object[],再调用arrayCopy

public boolean addAll(Collection<? extends E> c) {
    Object[] a = c.toArray();
    int numNew = a.length;
    ensureCapacityInternal(size + numNew); // Increments modCount
    System.arraycopy(a, 0, elementData, size, numNew);
    size += numNew;
    return numNew != 0;
}

那为什么不提供一个参数为数组的方法,addAll()方法,参数为数组呢,这样初始化List内部数据时写起来就很快。

那么尝试一下,假如这样写

public boolean addAll(Object[] a) {
   int numNew = a.length;
   ensureCapacityInternal(size + numNew); // Increments modCount
   System.arraycopy(a, 0, elementData, size, numNew);
   size += numNew;
   return numNew != 0;
}

经测试,

public static void main(String[] args) {
    MyList<Integer> m = new MyList();
    Object[] objects = {1,3,5,6,"ss"};
    m.addAll(objects);
    System.out.println(m);
}

输出结果为  [1, 3, 5, 6, ss],这就存在很明显的问题了,集合中混入了String类型。

假如参数类型为E[] ,经测试

public boolean addAll(E[] a) {
   int numNew = a.length;
   ensureCapacityInternal(size + numNew); // Increments modCount
   System.arraycopy(a, 0, elementData, size, numNew);
   size += numNew;
   return numNew != 0;
}

理论上似乎是可以的,测试结果也并没有什么问题。暂时也没想到可能会导致什么坑,

所以,我认为这应该是可行的。

欢迎大佬指正!

 

线性分类器(Linear Classifier) 线性分类器 如上图所示,这是二维空间中的一个数据集,如果他正好能够被一条直线分成两类,那么我们称它为线性可分数据集,这条直线就是一个线性分类器。 在三维空间中,如果数据集线性可分,是指能够被一个平面分为两类。 在一维空间中,所有的点都在一条直线上,如果线性可分。可以理解为它们能够被一个点分开。 这里的直线、平面、点被分为决策边界。 一个 m 维空间中的数据集,如果能够被一个超平面一分为二,那么这个数据集就是线性可分的,这个超平面就是决策边界。 例如,这是二维平面上的一条直线, 它可以把平面切分成两 阅读详情

相关推荐

【点云数据集】整理汇总(自用,更新ing)

涵盖了各种不同的城市场景:教堂、街道、铁路轨道、广场、村庄、足球场、城堡等等。邮件地址:dmich-request@graphics.stanford.edu,内容需包含:1. 您的姓名、头衔或职位,以及所在机构或隶属关系;license比较难获取,目前可获取的人员:(1)目前隶属于大学、工业研究实验室或其他主要机构的已发表过研究成果的研究人员;普林斯顿 ModelNet 项目的目标是为计算机视觉、计算机图形学、机器人技术和认知科学领域的研究人员提供全面、干净的物体 3D CAD 模型集合。

weixin_44392103的博客 798

addAll方法——向Set集合添加另一个集合的所有内容

addAll方法用来向Set集合添加另一个集合对象所包含的所有内容。 语法 boolean addAll(Collection&lt;? extends E&gt; c) 返回值:如果Set集合发生更改,则返回true。 参数:c是要添加到Set集合中的另一个集合对象。 示例 本示例创建一个Set集合,为该集合添加一些对象,然后再创建第二个Set集合,同样添加一些对象,最后调用addAll方法...

qq_32534441的博客 1万+

【Attention Is All You Need】Transformer模型精读

Attention Is All You Need》这篇论文奠定了Transformer模型的基础,为深度学习的发展提供了新的方向。Transformer通过自注意力机制和并行化处理显著提升了计算效率和模型性能。然而,Transformer的广泛应用也带来了新的挑战,如计算资源的消耗和对长序列的处理能力等。随着技术的不断发展,研究人员已经提出了诸如Efficient Transformer、Reformer等变种,旨在提升Transformer的效率和适应性。

Lewiz_124的博客 1499

【JAVA】List.addAll 详解

本篇文章介绍了方法的基本语法、返回值、使用方法及注意事项。通过本文的介绍,相信大家已经对于该方法的使用有了一定的了解和掌握。

代码的魅力,根本走不出来 1万+

告别踩坑!S32K3xx芯片上RTD-SDK的DFLASH与FEE模块配置全流程(基于S32DS)

本文详细解析了在NXP S32K3xx系列MCU上配置RTD-SDK的DFLASH与FEE模块的全流程,基于S32DS开发环境。从Cache配置、Mem_43_InFls模块设置到MemAcc模块的三种调用模式,提供了实战代码示例和常见问题排查表,帮助开发者高效完成存储管理配置,避免常见错误。

weixin_42653691的博客 269

【中英双语】Illumina测序原理详解 | 边合成边测序/Sequencing by Synthesis

很多朋友们问我视频讲解时用的笔记可不可以分享,那当然必须是可以呐!但我当时其实没有好好记录,只是打了个草稿就开讲啦!既然大家有需求,俺就重新整理了一下,希望可以帮到大家!

weixin_43843918的博客 7875

List中addAll()方法简介

话不多说上例子: public static void main(String[] args) { List<String> list1 = new ArrayList<>(); list1.add("1"); list1.add("2"); List<String> list2 = new ArrayList<>(); l...

最怕一生碌碌无为,还安慰自己平凡可贵 7万+

A Super-Resolution Imaging Method for Forward-Looking Scanning Radar Based on Improved TV论文阅读

具体而言,作者提出了一种改进的总变差(Improved Total Variation, ITV)方法,通过引入。论文旨在解决前视扫描雷达(Forward-Looking Scanning Radar)超分辨率成像中传统。(Batch Processing),以增强图像边缘特征的保留能力,并提升计算效率。论文的核心创新点在于对传统TV正则化的邻域梯度计算进行扩展,提出。ITV剖面(图3d)在噪声下仍保持矩形边缘,仅存。​(公式10):实现稀疏约束。),抑制远端单元贡献。(幅度远低于目标)。

yangqoor的博客 1240

集合addAll方法使用存在的问题。

集合addAll()方法的时候 这里里有两个集合,集合2要拿到集合1中的元素,然后对集合2进行removeAll方法,结果集合1中的值也没有了。 只是因为listTwo=listOne,只是把集合1的引用给了集合2,集合1和集合2的引用是指向同一个对象的。 怎么解决这个问题呢? 这里可以集合的addALL方法,把集合1中的所有元素都添加到集合2中,那么集合1和集合2是两份独立的对象。 ![在这...

xiaoWangZi89的博客 3679

AI驱动芯片设计的端到端验证:AI应用架构师的全流程指南

想象你要建造一座1000层的超级摩天大楼,每个房间都有独特的功能,管道、电路、电梯系统交织如迷宫。传统的检查方式是派1000个工程师逐层逐房手动检查,耗时十年且仍可能遗漏火灾隐患。这就是今天芯片设计面临的困境:7nm芯片含百亿晶体管,相当于百亿个"房间",传统验证方法(人工编写测试用例、随机仿真)已难以应对。本文的目的,是为AI应用架构师提供一份"AI驱动芯片验证导航图",范围涵盖从验证需求分析到芯片签核的全流程,包括AI模型如何融入传统验证工具链、数据如何驱动验证效率提升、以及端到端闭环系统的构建方法。

2501_92132293的博客 1242

史上最全!研究生科研必备科研工具(含AI科研工具),附使用说明和示例

这些工具在科研中的应用非常广泛,可以帮助研究生更高效地完成研究任务。为了更好地利用这些工具,建议深入学习它们的官方文档和教程,或者参加相关的工作坊和培训。

智能AI让学术科研更容易 3945

java 集合 之 集合工具类Collections

集合知识补充,让集合操作变得简单高效

qq_73698057的博客 1343

【信息系统项目管理师】高分论文:论信息系统项目的整合管理(绩效考核系统)

我们将项目管理计划中的子计划包括项目范围、进度、成本、质量管理计划,过程改进计划,人力资源管理计划,风险、采购管理计划,干系人管理计划,项目范围、成本、进度基准作为依据,查看项目的各个方面,通过组织全体团体成员会议来解读由各监控过程提供的信息,之后我与项目管理团队一起制订所需措施,确保项目绩效达到预期要求。在一个项目中,变更是必然的,也是不可避免的,进度拖延,成本失控,客户有新的需求等都会引起项目的变更。在本项目中,我要求有处于工作状态的产品,开发人员才可以对其任意修改,修改完成后,重新入库即可。

数据知道的博客 6888

集合removeAll的源码

List和set集合:交集、差集、合集的区别retainAll,removeAll、addAll 这个博客中,有朋友说集合的removeAll结果是错的,在这里分析一下源码,会更清晰。

随笔记录-分享&记忆 788

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java源码分析:深入探讨Iterator模式

地址:http://digi.it.sohu.com/20050508/n240036877.shtml http://digi.it.sohu.com/20050508/n240036877_1.shtml java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。  ...

hgx0615的专栏 111

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ArrayList源码浅析(jdk1.8)

ArrayList的实质就是动态数组。所以可以通过下标准确的找到目标元素,因此查找的效率高。但是添加或删除元素会涉及到大量元素的位置移动,所以效率低。 一、构造方法 ArrayList提供了3个构造方法 1、无参的,就是把表示集合的数组赋值为空。 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_

morghulies的博客 320

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数组转集合

Arrays.asList(ArrayUtil.toObject(Object [] {;;;})) 转自http://blog.youkuaiyun.com/chenleixing/article/details/43775127 最近开发中,业务上处理,经常用到asList方法,这让我不经想起了它的很多容易让人犯错的地方或者误解的地方,所以就想抽出时间来,整理一下,和大家分享出来,深夜了,话不多...

weixin_30367543的博客 88

JDK源码-LinkedList中addAll解读

读JDK源码之时,看到LinkedList的addAll源码,恕本人愚顿,真心觉得写得太优美了,所以分享一下。 /** * Inserts all of the elements in the specified collection into this * list, starting at the specified position. Shifts the elem...

静笃塾 675

面试官让我讲ArrayList中add、addAll方法的源码...我下次再来

前言 点赞在看,养成习惯。 点赞收藏,人生辉煌。 点击关注【微信搜索公众号:编程背锅侠】,防止迷路。 ArrayList中的添加方法总结 方法名 描述 public boolean add(E e) 将指定的元素追加到此列表的末尾。 public void add(int index, E element) 在此列表中的指定位置插入指定的元素。 public boolean addAll(Collection<? extends E> c) 按指定集合的Iterato

Coding Earth Engine 1054

关于ArrayList源码的解读

本文深入解读了ArrayList中常用方法的底层实现原理。1) add方法通过ensureCapacityInternal确保容量(默认扩容1.5倍),使用数组拷贝实现动态扩容;2) 带索引的add方法先检查索引合法性,再通过System.arraycopy移动元素;3) addAll方法将集合转为数组后批量添加;4) set/get方法通过索引直接操作底层数组;5) contains基于indexOf实现

2401_88840386的博客 957

LinkedList源码分析之addAll----Day3

Hello,今天我们来进行我们的第三次LinkedList源码分析,不清楚Linkedlist结构的小伙伴可以去看鄙人这篇文章(看完还不懂你打我(●’◡’●)): 《小白入门数据结构(链表)–LinkedList特点分析–超详细方法源码解读-Day1》 此次分析的是addAll(int index, Collection<? extends E> c):将指定集合(Collection c)中的所有元素插入到此列表中,从指定的位置(index)开始。 不说废话,直接上码分析: pub

唐豌豆的博客 676

Java源码解读——ArrayList(一)

为了提高自己的Java开发能力,我也向高手、牛人学习,去解读源码。自己底子差了点,不过看个源码还是没问题的。第一站ArrayList。 源码为Java 1.7的源码 ArrayList是一个实现可变长数组,继承AbstractList类,实现所有的List接口,还实现了RandomAccess、Cloneable、Serializable接口。ArrayList不进行同步,除此之外基本

zhzzhz123456的博客 362

【java集合框架源码剖析系列】java源码剖析之TreeSet

本博客将从源码的角度带领大家学习TreeSet相关的知识。 一TreeSet类的定义: public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, java.io.Serializable可以看到TreeSet是继承自AbstracSet同时实现了NavigableSet,Cloneable,

(* ̄︶ ̄) 2587

一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之ArrayList

一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之ArrayList 一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之LinkedList 一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之HashMap 一文搞定ArrayList、LinkedList、HashMap、HashSet -----源码解读之HashSet 一、ArrayList 源码

诗水人间 11万+

JDK源码解读之RegularEnumSet

主要内容转载自usafchn's Notes,然后在此基础上做了一些补充。 缘由 今天做项目的时候偶然用到EnumSet,EnumSet平时不太常用,比较陌生,于是点进去看了下源码,发现这个类还是比较有意思的,首先EnumSet是个抽象类,当我们调用EnumSet提供的静态函数创建对象的时候,实际创建的是RegularEnumSet或者JumboEnumSet,前者对应

Francis Note 1143

集合-ArrayList

对于调试jdk源码,若是发现无法在调试过程中查看源码中的变量,可以参考这篇文章:https://blog.youkuaiyun.com/u010407050/article/details/76690478 参考:http://www.cnblogs.com/skywang12345/p/3323085.html removeIf() 方法https://blog.youkuaiyun.com/qq_27...

anjl1296的博客 86
上一篇: 原码,补码,反码
下一篇: Maven远程依赖仓库的配置及部署
MrMoving
博客等级 码龄10年 54粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值