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

查找某个元素在数组对应索引

1 问题 已知一个数组内元素为 { 19, 28, 37, 46, 50 } 。用户输入一个数据,查找该数据在数组索引,并在控制台输出找到索引值,如果没有查找到,则输出 -1。...2 方法 首先定义一个数组,在键盘录入要查找数据,用一个变量接收。再定义一个变量,初始值为-1。遍历数组获取数组每一个元素。...然后将键盘输入数据和数组每一个元素进行比较,如果值相同就把该值对应索引赋值给索引变量,并结束循环。最后输8出索引变量。...; }else{ System.out.println("您输入数字" + a + "在数组索引是:" + dataIndex); } }...if(a == arr[i]){ return i; } } return -1; } } 3 结语 针对查找某个元素再数组对应索引这个问题

3.1K10

js如何判断数组包含某个特定值_js数组是否包含某个

array.indexOf 判断数组是否存在某个值,如果存在返回数组元素下标,否则返回-1 let arr = ['something', 'anything', 'nothing',...index 当前遍历索引。 array 数组本身。 参数:thisArg(可选) 指定 callback this 参数。...item.id == 3; }); # 结果: Object { id: 3, name: "nothing" } array.findIndex(callback[, thisArg]) 返回数组满足条件第一个元素索引...index 当前遍历索引。 array 数组本身。 参数:thisArg(可选) 指定 callback this 参数。...方法,该方法返回元素在数组下标,如果不存在与数组,那么返回-1; 参数:searchElement 需要查找元素值。

18.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

JavaArray与ArrayList10个区别

实际上,ArrayList是使用Java数组内部实现。...对于基于索引访问,ArrayList和array均提供O(1)性能,但是如果添加新元素会触发调整大小,则添加在ArrayList可以为O(logN),因为这涉及在后台创建新并数组从旧数组复制元素数组...例如,int []数字有效,但intArrayList无效。您如何处理这个问题?假设您想将int原语存储ArrayList,那又如何呢?好了,在Java您可以使用包装器类。...7、迭代ArrayList提供了更多迭代方式,即Array只能通过循环索引一一访问所有元素。...虽然您可以通过分配null使用数组来模拟相应索引,除非将多个中间该索引上方所有元素都向下移动一级,否则它不会像删除。

7.5K41

【Java提高十九】Iterator&fail-fast机制

它可以把访问逻辑从不同类型集合类抽象出来,从而避免向客户端暴露集合内部结构。 在没有迭代器时我们都是这么进行处理。...如下: 对于数组我们是使用下标来进行处理: 对于ArrayList是这么处理: 对于这两种方式,我们总是都事先知道集合内部结构,访问代码和集合本身是紧密耦合...上面只是对Iterator模式进行简单说明,下面我们看看JavaIterator接口,看他是如何来进行实现。...二、各个集合Iterator实现 下面就ArrayListIterator实现来分析,其实如果我们理解了ArrayList、Hashset、TreeSet数据结构,内部实现,对于他们是如何实现...因为ArrayList内部实现采用数组,所以我们只需要记录相应位置索引即可,其方法实现比较简单。

794110

JDK容器学习之ArrayList:底层存储和动态扩容

底层数据模型 查看源码,其内部定义成员变量 // 默认数组容量 private static final int DEFAULT_CAPACITY = 10; // 静态成员,创建一个空ArrayList...新增,删除,读取逻辑 因为底层数据结构为数组,所以根据index查询元素是常量级别开销,等同于获取数组中所索引为index处元素 因此需要关注就是新增一个元素,若数组容量不够,如何进行扩容...删除一个元素,数组连续性又是如何保障 1....contain和indexOf两个接口,用于判断列表是否包含某个元素or某个元素在数组索引 若让我们自己来设计上面两个接口,多半是遍历数组,依次判断每个元素,是否满足要求 JDK实际实现代码如下...小结 ArrayList底层存储为数组 ArrayList可保存null,一个对象可以塞入多次 初始容量为10, 新增元素,若实际个数超过数组容量,则触发扩容逻辑 优先扩容原来容量1.5倍 若依旧不够

86170

java集合【2】——— Collection接口详解

/可分割迭代器 获取长度 取交集 获取流/并行流 我们遍历元素时候可以获取Iterator,但是具体实现是以子类特性去实现,比如ArrayList是用内部方式实现了Iterator接口。...最常见三个实现类就是ArrayList,Vector,LinkedList,ArrayList和Vector都是内部封装了对数组操作,唯一不同是,Vector是线程安全,而ArrayList不是...(n)获取一个指定索引为n元素ListIterator,这是一个可以双向移动迭代器。...操作数组索引时候需要注意,由于List实现类底层很多都是数组,所以索引越界会报错IndexOutOfBoundsException。...Collection接口继承了Iterable接口,而Map则不是,Map是在各自实现类才用内部方式实现Iterator接口,例如HashMap,key或者value或者它们组合entry都可以使用迭代器进行遍历

1K21

Iterator,fail-fast机制与比较器

Iterator模式是用于遍历集合类标准访问方法。 它可以把访问逻辑从不同类型集合类抽象出来,从而避免向客户端暴露集合内部结构。 在没有迭代器时我们都是这么进行处理。...在实际应用如何需要将上面将两个集合进行整合是相当麻烦。所以为了解决以上问题,Iterator模式腾空出世,它总是用同一种逻辑来遍历集合。...上面只是对Iterator模式进行简单说明,下面我们看看JavaIterator接口,看他是如何来进行实现。...各个集合Iterator实现 下面就ArrayListIterator实现来分析,其实如果我们理解了ArrayList、Hashset、TreeSet数据结构,内部实现,对于他们是如何实现Iterator...因为ArrayList内部实现采用数组,所以我们只需要记录相应位置索引即可,其方法实现比较简单。

69120

java集合【6】-- Collection源码解析

/可分割迭代器 获取长度 取交集 获取流/并行流 我们遍历元素时候可以获取Iterator,但是具体实现是以子类特性去实现,比如ArrayList是用内部方式实现了Iterator接口。...最常见三个实现类就是ArrayList,Vector,LinkedList,ArrayList和Vector都是内部封装了对数组操作,唯一不同是,Vector是线程安全,而ArrayList不是...(n)获取一个指定索引为n元素ListIterator,这是一个可以双向移动迭代器。...操作数组索引时候需要注意,由于List实现类底层很多都是数组,所以索引越界会报错IndexOutOfBoundsException。...Collection接口继承了Iterable接口,而Map则不是,Map是在各自实现类才用内部方式实现Iterator接口,例如HashMap,key或者value或者它们组合entry都可以使用迭代器进行遍历

51230

java开发人员最常犯10种错误

文章目录 一、把数组转成ArrayList 二、判断一个数组是否包含某个值 四、HashTable 和 HashMap 选择 五、使用原始集合类型 六、访问级别 七、ArrayList与LinkedList...= Arrays.asList(arr); 使用Arrays.asList()方法可以得到一个ArrayList,但是得到这个ArrayList其实是定义在Arrays类一个私有的静态内部类。...二、判断一个数组是否包含某个值 在判断一个数组是否包含某个时候,开发者经常这样做: Set set = new HashSet(Arrays.asList(arr)...); return set.contains(targetValue); 在在Java如何高效判断数组是否包含某个元素一文,深入分析过,以上方式虽然可以实现功能,但是效率却比较低。...迭代器被创建之后会建立一个指向原来对象单链索引表,当原来对象数量发生变化时,这个索引内容不会同步改变,所以当索引指针往后移动时候就找不到要迭代对象,所以按照 fail-fast 原则 迭代器会马上抛出

12510

JDK源码阅读(三):ArrayList源码解析

看源码我们可以看到传入 Collection 构造方法做事情就是复制数组,将已有的集合复制集合。...5.add 方法 ArrayList 底层是用数组来实现,那我们就一起来看以下 Add 方法是如何实现 以下是 Add 方法实现源码。 ?...在 ensureExplicitCapacity 方法,首先对修改次数 modCount 加一,这里 modCount 给 ArrayList 迭代器使用,在并发操作被修改时,提供快速失败行为(...内部数组长度,大于的话调用 grow 方法对内部数组 elementData 扩容,grow 方法代码如下: ?...循环数组 for 循环 for 循环可能在 java 是最常用遍历方法主要实现: ? 因为我们前面说过 get 方法可以通过索引来获取元素。同理。 迭代器 iterator 先看实现: ?

35920

JDK源码阅读(三):ArrayList源码解析

看源码我们可以看到传入 Collection 构造方法做事情就是复制数组,将已有的集合复制集合。...5.add 方法 ArrayList 底层是用数组来实现,那我们就一起来看以下 Add 方法是如何实现 以下是 Add 方法实现源码。 ?...在 ensureExplicitCapacity 方法,首先对修改次数 modCount 加一,这里 modCount 给 ArrayList 迭代器使用,在并发操作被修改时,提供快速失败行为(...内部数组长度,大于的话调用 grow 方法对内部数组 elementData 扩容,grow 方法代码如下: ?...循环数组 for 循环 for 循环可能在 java 是最常用遍历方法主要实现: ? 因为我们前面说过 get 方法可以通过索引来获取元素。同理。 迭代器 iterator 先看实现: ?

38730

【Java】一文囊括Java集合,随用随看,快速上手。

出现在JDK5之后,内部原理就是一个Iterator迭代器。 所有的单列集合和数组可以用增强for循环进行遍历。...底层原理 ArrayList底层原理: ①利用空参创建ArrayList集合,在底层创建一个默认长度位0数组。...---- ⑦Iterator 底层原理 Iterator底层原理: ①创建Iterator实例,底层就是创建了一个Iterator内部对象,这个内部类就代表迭代器。...结论:如何避免并发修改异常? 就是在迭代器或增强for遍历集合时,避免使用集合方法进行新增/修改。...> list,int i,int j):交换集合中指定索引位置元素。 ---- 4. 不可变集合 应用场景: 如果某个数据不能被修改,把它防御性地拷贝不可变集合是个很好实践。

17740

Java集合详解3:一文读懂Iterator,fail-fast机制与比较器

Iterator模式是用于遍历集合类标准访问方法。 它可以把访问逻辑从不同类型集合类抽象出来,从而避免向客户端暴露集合内部结构。 在没有迭代器时我们都是这么进行处理。...在实际应用如何需要将上面将两个集合进行整合是相当麻烦。所以为了解决以上问题,Iterator模式腾空出世,它总是用同一种逻辑来遍历集合。...上面只是对Iterator模式进行简单说明,下面我们看看JavaIterator接口,看他是如何来进行实现。...各个集合Iterator实现 下面就ArrayListIterator实现来分析,其实如果我们理解了ArrayList、Hashset、TreeSet数据结构,内部实现,对于他们是如何实现Iterator...因为ArrayList内部实现采用数组,所以我们只需要记录相应位置索引即可,其方法实现比较简单。

85000

Java集合详解3:一文读懂Iterator,fail-fast机制与比较器

该系列博文会告诉你如何从入门进阶,从servlet框架,从ssm再到SpringBoot,一步步地学习JavaWeb基础知识,并上手进行实战,接着了解JavaWeb项目中经常要使用技术和组件,包括日志组件...Iterator模式是用于遍历集合类标准访问方法。 它可以把访问逻辑从不同类型集合类抽象出来,从而避免向客户端暴露集合内部结构。在没有迭代器时我们都是这么进行处理。...上面只是对Iterator模式进行简单说明,下面我们看看JavaIterator接口,看他是如何来进行实现。...各个集合Iterator实现 下面就ArrayListIterator实现来分析,其实如果我们理解了ArrayList、Hashset、TreeSet数据结构,内部实现,对于他们是如何实现Iterator...因为ArrayList内部实现采用数组,所以我们只需要记录相应位置索引即可,其方法实现比较简单。

53920

从源码看集合ArrayList

可能大家都知道,javaArrayList类,是一个泛型集合类,可以存储指定类型数据集合,也知道可以使用get(index)方法通过索引来获取数据,或者使用for each 遍历输出集合内容...本篇主要从以下几个角度看看ArrayList: add及其重载方法是如何实现 remove及其重载方法是如何实现 迭代本质及实现基本原理 一、add方法添加元素集合      ...ArrayList是怎么做到可以不断添加元素集合呢?...如果大于0,执行System.arraycopy方法,因为此方法为native方法,我们不得而知它是如何实现,但是我们可以大致猜出他是这样实现:以索引位置开始,索引位置后面的数组元素向前覆盖。...要想解决这个问题就要看看ArrayList是怎么实现迭代。实际上是通过内部类来实现迭代器接口

63560

彻底搞懂ArrayList

=Object[].class,那么会重新拷贝一份数据数组,并且elementData会指向新数组。...SubList 该类最重要作用就是切割ArrayList,然后返回一个List集合其中一部分视图,这里有第三个问题,ArrayListsubList会得到部分视图,那么对于SubList操作会影响...答案:不通过迭代器删除元素时,由于数据会进行前移,可能(不是一定,要考虑元素位置)会造成数组越界和数据遗漏(i+1元素前移到i位置,那么原来i+1元素就会被遗漏掉),通过迭代器remove删除元素后...第三个问题:ArrayListsubList会得到部分视图,那么对于SubList操作会影响ArrayList吗?...答案:会影响,在SubList源码我们可以发现,其内部操作函数实际上都是对ArrayListelementData操作。

42131
领券