首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

该数组中有11个对象。那么为什么.map()返回12呢?

根据提供的问答内容,我们可以分析出.map()返回12的原因可能是因为数组中的对象数量被误计算了。在给定的问答内容中,明确指出该数组中有11个对象,但.map()方法返回的结果却是12。这可能是由于以下几种情况导致的:

  1. 数组中的对象数量被误计算:可能是由于对数组中的对象进行了重复计数或者遗漏计数,导致最终结果多了一个对象。
  2. .map()方法的使用错误:.map()方法是用于对数组中的每个元素进行操作并返回一个新数组的方法。如果在使用.map()方法时,对数组中的元素进行了错误的操作或者返回了多余的元素,就会导致最终结果中多出一个对象。
  3. 代码逻辑错误:除了上述两种可能性外,还有可能是在处理数组和使用.map()方法的代码逻辑中存在错误,导致最终结果不符合预期。

综上所述,根据提供的信息无法确定具体的原因,需要进一步检查代码逻辑和对数组进行操作的过程,以确定为什么.map()返回12。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入理解 hashcode 和 hash 算法

String 类型的 hashcode 方法 在 JDK 中,Object 的 hashcode 方法是本地方法,也就是用 c 语言或 c++ 实现的,方法直接返回对象的 内存地址。...都是使用的 31 ,那么有没有想过:为什么要使用 31 ?...但是,方法在一些极端情况下还是有问题,比如:10000000000000000000000000 和 1000000000100000000000000 这两个数,如果数组长度是16,那么即使右移16...我们说,hash 算法的目的是为了让hash值均匀的分布在桶中(数组),那么,如何做到?试想一下,如果不使用 2 的幂次方作为数组的长度会怎么样?...那我们如何自定义?自从有了阿里的规约插件,每次楼主都要初始化容量,如果我们预计我们的散列表中有2个数据,那么我就初始化容量为2嘛?

2.4K31

hashCode 为什么乘以 31?深入理解 hashCode 和 hash 算法

String 类型的 hashcode 方法 在 JDK 中,Object 的 hashcode 方法是本地方法,也就是用 c 语言或 c++ 实现的,方法直接返回对象的 内存地址。...上面提到Arrays.hashCode方法也是乘以 31 再叠加,那么为什么使用 31 ? 4....但是,方法在一些极端情况下还是有问题,比如: 10000000000000000000000000 和 1000000000100000000000000 这两个数,如果数组长度是16,那么即使右移...到这里,我们提了一个关键的问题: HashMap 的容量为什么建议是 2的幂次方?正好可以和上面的话题接上。 我们说,hash 算法的目的是为了让hash值均匀的分布在桶中(数组),那么,如何做到?...那我们如何自定义?自从有了阿里的规约插件,每次楼主都要初始化容量,如果我们预计我们的散列表中有2个数据,那么我就初始化容量为2吗?

2.5K21
  • 用js来实现那些数据结构02(数组篇02-数组方法)

    map(): map()方法,其实简单来说就是一个映射,但是map必须要有返回值,并且map返回一个新数组。同样的,map也可以有三个参数,跟forEach是一样的。...filter会返回一个调用方法数组的一个子集,什么意思,就是说filter的参数是一个函数,该函数是用来逻辑判断的(类似于every和some的那种判定),如果判断结果返回true或者可以作为true...竟然会是这样的结果,那么咱们来看看为什么。...那么,我们可不可以在数组中加入其它元素?这里不再赘述,你们要自己去试试噢。 6、toString(),把数组中所有元素作为字符串输出。...那么再说,如果搜索的参数在数组中并不存在,那么返回-1,两个方法都是一样的。

    44910

    用js来实现那些数据结构02(数组篇02-数组方法)

    map(): map()方法,其实简单来说就是一个映射,但是map必须要有返回值,并且map返回一个新数组。同样的,map也可以有三个参数,跟forEach是一样的。...filter会返回一个调用方法数组的一个子集,什么意思,就是说filter的参数是一个函数,该函数是用来逻辑判断的(类似于every和some的那种判定),如果判断结果返回true或者可以作为true...竟然会是这样的结果,那么咱们来看看为什么。...那么,我们可不可以在数组中加入其它元素?这里不再赘述,你们要自己去试试噢。 6、toString(),把数组中所有元素作为字符串输出。...那么再说,如果搜索的参数在数组中并不存在,那么返回-1,两个方法都是一样的。

    1.2K110

    白话解析Java中HashMap底层实现原理

    我们这个类中有个字段叫ID,那么我们就定义我们的hashcode为ID%8,然后把我们的类存放在取得得余数那个位置。...重写了equals(),为什么还要重写hashCode()?...根据上面 put 方法的源代码可以看出,当程序试图将一个key-value对放入HashMap中时,程序首先根据 key的 hashCode() 返回值决定 Entry 的存储位置:如果两个 Entry...那么hashmap什么时候进行扩容?...* 0.75=12的时候,就把数组的大小扩展为2* 16=32,即扩大一倍,然后重新计算每个元素在数组中的位置,而这是一个非常消耗性能的操作,所以如果我们已经预知hashmap中元素的个数,那么预设元素的个数能够有效的提高

    59110

    几百万数据放入内存不会把系统撑爆吗?

    Java引用类型 在一个对象中除了有基本数据类型以外,我们也会有一些引用类型,引用类型的对象比较特殊,因为这些对象真正存储在虚拟机中的堆内存中,对象中只是存储了一个引用而已,如果是引用类型那么就会存储一个指向引用的指针...在String类中有两个属性,其中对象头固定了是12字节,int是4字节,char[]数组其实在这里相当于引用对象存的,所以存的是地址,因此占用4个字节,所以大小为对象12Byte+实例数据8Byte...一个空字符串占用内存为String对象+char[]数组对象=40Byte 那么我们上面举的例子abcdefg占用多少内存?...那么abcdefg 占用内存大小就是String对象+char[]数组对象=56Byte 用List存储对象 那么我们在内存中放入二千万个这个对象的话,需要占用多少内存?...用Map存储对象Map存储对象计算内存大小有些麻烦了,众所周知Map的结构是如下图所示。 ? 它是一个数组加链表(或者红黑树)的结构,而数组中存放的数据是Node对象

    3.2K51

    几百万数据放入内存不会把系统撑爆吗?

    Java引用类型 在一个对象中除了有基本数据类型以外,我们也会有一些引用类型,引用类型的对象比较特殊,因为这些对象真正存储在虚拟机中的堆内存中,对象中只是存储了一个引用而已,如果是引用类型那么就会存储一个指向引用的指针...在String类中有两个属性,其中对象头固定了是12字节,int是4字节,char[]数组其实在这里相当于引用对象存的,所以存的是地址,因此占用4个字节,所以大小为对象12Byte+实例数据8Byte...一个空字符串占用内存为String对象+char[]数组对象=40Byte 那么我们上面举的例子abcdefg占用多少内存?...那么abcdefg 占用内存大小就是String对象+char[]数组对象=56Byte 用List存储对象 那么我们在内存中放入二千万个这个对象的话,需要占用多少内存?...用Map存储对象Map存储对象计算内存大小有些麻烦了,众所周知Map的结构是如下图所示。 ? 它是一个数组加链表(或者红黑树)的结构,而数组中存放的数据是Node对象

    77321

    JDK容器学习之HashMap (一) : 底层存储结构分析

    0 : e.getValue().hashCode()) 确保两个 Entry对象 equals返回true,则hashcode的值必然相同 equals 方法 当两个entry对象表示的是同一个映射关系时...Node[] table; 说明 按我们的理解,map是一个kv结构,每个Node对象表示的就是一个kv对,那么这个table应该就是保存所有的kv对的数据结构了 为什么会是一个数组?...MAXIMUM_CAPACITY : n + 1; } 上面的构造,并没有如我们预期的初始化 table 数组,接下来看put方法,是否有设置 table数组 ---- c....初始化 数组的初始化延迟在首次向Map中添加元素时进行 默认数组长度为16,阀值为12 阀值定义为: The next size value at which to resize (capacity *...数组长度要求 数组长度要求为2的n次方 tableSizeFor 方法实现获取正大于数字n的2的整数次幂 (这个实现比较有意思) 4. 获取Entry对象 如何通过key获取对应的Entry对象

    63760

    scala(六) 高阶函数

    既然函数是个对象那么肯定可以作为参数用来传递。 于是我们可以定义一个计算器函数: 除了传递正常的数值外,还需要把你具体的实现传递给我。...val result=calculator(12,4,(x,y)=>y-x) 如果函数体中有(),函数的参数在函数中小括号中以表达式形式存在,此时不能用小括号代替。...案例实战 **对数组中每个元素按照指定规则进行操作,操作之后返回结果结果 数据: Array[String]("hello","spark","hadoop","flink") 规则 [可变]:...} List(5, 5, 6, 5) 规则是可变的,上面的案例是获取长度,要是获取其他信息又怎么获取?...={ for (e<- array)yield func(e) } List(HELLO, SPARK, HADOOP, FLINK) 知道为什么需要返回 Any 吗?

    66910

    10分钟拿下 HashMap「建议收藏」

    数组长度扩容为原来的2 倍 将原来数组中的元素进行重新放到新数组中 需要注意的是,每次扩容之后,都要重新计算原来的 Entry 在新数组中的位置,为什么数组扩容了,Entry 在数组中的位置发生变化了...所以我们会想到计算位置的 indexFor 方法,为什么,我摘出了方法的源码如下: static int indexFor(int h, int length) { // h 为key 的 hash...HashMap 计算元素位置采用的是 &运算,不了解此运算的我在这里给个简单的例子: 高能:为什么 HashMap使用这种方式计算在数组中位置? 按照我们的潜意识,取模就可以了。...这又带来一个新问题,为什么与运算要用 length -1 ,回看 hashmap初始化的时候,数组长度 length必须是2的整次幂(如果手动传参数组长度为奇数n,hashMap会自动转换长度为距离n...,要重新计算阈值;当元素个数 大于新的阈值时,map再自动扩容;以默认值为例,阈值=16*0.75=12,当元素个数大于12时就要扩容;那剩下的4个数组位置还没有放置对象就要扩容,造成空间浪费,所以要进行时间和空间的折中考虑

    28620

    Java中的集合(面试题)

    注意: 要做出这道题必须对集合的体系结构非常的熟悉HashMap 本身就是不可排序的,但是道题偏偏让给HashMap排序,那我们就得想在API中有没有这样的Map结构是有序的, LinkedHashMap...) { //首先拿到map的键值对集合 Set> entrySet = map.entrySet() ; // 将set 集合转为List集合,为什么...(回答这样的问题,不要只回答个皮毛,可以再介绍一下 ArrayList内部是如何实现数组的增加和删除的,因为数组在创建的时候长度是固定的,那么就有个问题我们往ArrayList 中不断的添加对象,它是如何管理这些数组...2、判断形参index是否大于等于集合的长度,如果成了则抛出运行时异常 3、获取数组中脚标为index的对象result,对象作为方法的返回值 4、调用System的arraycopy函数,拷贝原理如下图所示...System.arraycopy(a, index + 1,a, index, --s - index); 假设index=2,那么要删除的对象如图打叉部分,我们只需要将该数组后面蓝色区域整体往前移动一位位置即可

    47120

    Java中Map接口的解析

    hashMap则结合了两者的优点,既满足了寻址,又满足了操作,为什么?关键在于它的存储结构。 它底层是一个数组数组元素就是一个链表形式,见下图: Entry: 存储键值对。...什么是加载因子?hashMap的大小是一定的,如果不够存储了肯定要扩容,那么扩容的依据是什么,什么时候确定要扩容了?...这个时候就需要引入加载因子这个概念,我们假使依旧使用默认大小16,加载因子0.75,那么当hashMap的size大于12(16*0.75=12)的时候,那么就会进行扩容。...上面说到如果数组扩容,那么每次要怎么扩容?...当size大于等于某一个阈值thresholdde时候且table并不是一个空table,因为size 已经大于等于阈值了,说明Entry数量较多,哈希冲突严重,那么Entry对应的桶不是一个空桶

    67820

    为什么重写了equals()也要重写hashCode()

    这是为什么?接下来我们就介绍一下这两个方法。...==在Java中有什么含义。...(y)返回true,y.equals(z)返回true,那么y.equals(z)也应该返回true 一致性:对于两个非空对象x、y,在没有修改此对象的前提下,多次调用返回的结果应该相同 对于任何非空的对象...HashMap是由数组和链表组成的高效存储数据的结构。那么是如何确定一个数据存储在数组中的哪个位置?...hashCode:用来计算对象放入数组中的哪个位置,因为是两个都是new的对象,所以即使里面的值一样,但是对象所处的地址却不同,所以使用默认的hashCode也就不同,当然在hashMap中就不会认为两个是一个对象

    1K10

    Java集合--HashMap解惑

    此时,细心的朋友可能会问,既然是基于哈希表的实现,那么当新增的元素出现了hash值重复了怎么办,怎么插入? 专业上来说,hash值重复的情况,我们称之为哈希碰撞(又或者哈希冲突)。...所以在进行完hash值比较后,还进行了equals()或者==的判断; 那么,既然使用了equals()方法,为什么还要进行==判断?(艹,就你问题最多,哪来的这么多为什么?)...的话,hashSeed的值一直为0,ALTERNATIVE_HASHING_THRESHOLD的值为Integer.MAX_VALUE; 那么,对于hashSeed是不是为0来说,又有什么意义?...而在后面的扩容操作时,我们也是将原有的数组长度扩大了2倍。所以,无论如何HashMap中Entry[]的长度都是2的N次方; 此时,你可能会问:为什么一定是2的N次方?...0 : hash(key); //计算hash值对应数组的角标,获取数组中角标下的Entry对象:对元素所属的链表进行遍历; for (java.util.HashMap.Entry<

    1.1K50
    领券