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

如何动态遍历arraylist并添加每个第n个元素

动态遍历ArrayList并添加每个第n个元素的方法可以通过以下步骤实现:

  1. 创建一个空的ArrayList用于存储结果。
  2. 定义一个变量n,表示要添加的元素的位置。
  3. 使用for循环遍历原始的ArrayList。
  4. 在每次循环中,检查当前元素的索引是否是第n个元素。
  5. 如果是第n个元素,将其添加到结果ArrayList中。
  6. 最后返回结果ArrayList。

以下是一个示例代码:

代码语言:txt
复制
import java.util.ArrayList;

public class DynamicArrayListTraversal {
    public static void main(String[] args) {
        ArrayList<Integer> originalList = new ArrayList<>();
        originalList.add(1);
        originalList.add(2);
        originalList.add(3);
        originalList.add(4);
        originalList.add(5);

        int n = 2; // 添加每个第2个元素

        ArrayList<Integer> resultList = traverseAndAdd(originalList, n);

        System.out.println("结果ArrayList: " + resultList);
    }

    public static ArrayList<Integer> traverseAndAdd(ArrayList<Integer> originalList, int n) {
        ArrayList<Integer> resultList = new ArrayList<>();

        for (int i = 0; i < originalList.size(); i++) {
            if ((i + 1) % n == 0) {
                resultList.add(originalList.get(i));
            }
        }

        return resultList;
    }
}

输出结果为:

代码语言:txt
复制
结果ArrayList: [2, 4]

在这个例子中,原始ArrayList为[1, 2, 3, 4, 5],我们添加每个第2个元素,所以结果ArrayList为[2, 4]。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobile
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙:https://cloud.tencent.com/product/um

请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估。

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

相关·内容

遍历ArrayList移除一元素

前言 这是一比较经典的面试题,相信也会有不少人遇到,今天就在此记录一下,写了两种方式供大家参考。 方式一 在for循环中删除元素,倒序遍历ArrayList能够有效防止漏删,这里大家可能会有疑问了?...假设按照从0到size-1下标来删那么如果有相邻的两元素是一样的,删除了第一,此时数组长度会-1并且所有元素往前移动一位,那么第二就移动到第一元素的位置了,此时控值for循环的下标i已经+1了等于直接就跳过了第二重复元素...List strs = new ArrayList(); strs.add("1") strs.add("2") strs.add("3") strs.add("4") strs.add...1; i >= 0; i --) { if(strs.get(i).equals("1")){ strs.remove(i); } } 方式二 使用迭代器遍历...ArrayList删除某一元素 List strs = new ArrayList(); strs.add("1") strs.add("2") strs.add("3") strs.add

45810

如何遍历ArrayList集合,安全删除其中的元素

如何遍历ArrayList集合,安全删除其中的元素?...1、遍历ArrayList集合有三种方式 (1)for循环 (2)增强for循环,也就是foreach (3)迭代器iterator 2、普通for循环遍历删除元素,list集合的大小会变小...例如我for循环遍历删除第一元素,接着按照索引去寻找第二元素,由于删除的关系 后面所有的元素都会往前面移动一位,就会导致按照索引得到的是第三元素。...解决方法:将list集合反过来遍历,循环删除其中的元素 当我们使用增强for循环删除第一元素后,再去遍历list集合,此时就会报并发修改错 (concurrentModificationException...解决方法:增强for循环遍历删除第一元素后就break跳出。

95020

如何删除给定单向链表的倒数N元素

如何删除给定单向链表的倒数N元素? 先分析下有哪些关键词: 1. 单向链表,那也就是我们只能单向遍历; 2....倒数N元素,只能先遍历到尾部,才知道倒数N元素是什么,但问题又出现了,是单向链表,不能反向遍历,那该如何解决呢? 3....以如下队列为例,如果要删除倒数2元素,就要找到倒数3元素,也就是倒数N+1元素,那改如何做呢? 首先一定需要一指针遍历到队列尾部的,那怎么记录这个指针已经遍历过的元素呢?...可否也用一指针记录呢. 按这个思路,首先需要一正常的指针一直遍历到队列尾部,称之为快指针; 再需要一比这个快指针慢N元素的第二指针,称之为慢指针....两指针按照同样的速度同时移动,当快指针到达结尾的时候,慢指针也就到达了倒数N+1元素的位置. 再细分下,如果要删除的目标元素正好和链表长度相同呢?

63410

Java中Array与ArrayList的10区别

另一方面 ,ArrayList是Java Collection框架中的一类,它是作为动态数组引入的。...对于基于索引的访问,ArrayList和array均提供O(1)性能,但是如果添加元素会触发调整大小,则添加ArrayList中可以为O(logN),因为这涉及在后台创建新数组从旧数组中复制元素到新的数组...8、支持的操作 由于ArrayList在内部由数组支持,因此它公开了Array可能执行的操作,但是鉴于其动态特性,它还没有添加Array无法执行的操作,例如,您可以将元素存储在array和ArrayList...ArrayList还提供了清除和重用的操作,例如clear()和removeAll(),Array不提供该操作,但是您可以循环遍历Array并为每个索引分配null以模拟它。...7、从零开始的索引 array和ArrayList都有从零开始的索引,即第一元素索引开始。 这就是Java中数组与ArrayList之间真正的区别的全部。

7.5K41

【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

dp[1] 有两有效元素 , dp[2] 有三有效元素 , dp[4] 有四有效元素 ; 初始化数据 : 假设 该 三角形有 n 行数据 ; 那么 , n - 1 行 , 也就是最后一行 ,...最终计算出 0 行 0 列 数字元素的最短路径 , 存储在二维数组 dp[0][0] 元素上 ; 上述算法中 二维数组 dp 中 , 每个元素 , dp[i][j] 就是一 子问题 ,...2 行 进行遍历 , // 最终计算出 0 行 0 列 数字元素的最短路径 , // 存储在二维数组 dp[0][0] 元素上 ; return..., 其值为 -2 ; dp[0] 只有一有效元素 , dp[1] 有两有效元素 , dp[2] 有三有效元素 , dp[4] 有四有效元素 ; 初始化数据 : 没有办法套入 动态规划方程 中的点...1 层 , 也就是最后一层 , 所有元素的最短路径 , 选择 最小的 最短路径 , 就是本次的最短路径 ; 上述算法中 二维数组 dp 中 , 每个元素 , dp[i][j] 就是一 子问题 ,

56720

16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)

遍历Collection中元素:不论Collection的实际类型如何,它都支持一iterator()的方法,该方法返回一迭代子,使用该迭代子即可逐一访问Collection中每一元素。...多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。...它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n元素需要O(n)的时间。...每个ArrayList实例都有一容量(Capacity),即用于存储元素的数组大小。这个容量可随着不断添加元素而自动增加,但是增长算法并没有定义。...通过get(int index)获取ArrayListindex元素时。直接返回数组中index位置的元素,而不需要像LinkedList一样进行查找。

88200

ArrayList集合常用的方法详细讲解

("1元素是:" + list.get(0)); System.out.println("2元素是:" + list.get(1)); System.out.println("...3元素是:" + list.get(2)); System.out.println("4元素是:" + list.get(3)); } } 上面代码执行结果: 集合的长度:4 1元素是...:stu1 2元素是:stu2 3元素是:stu3 4元素是:stu4 1.3集合的遍历 通过集合遍历,得到集合中每个元素,这是集合中最常见的操作。...i++) { 13 //通过索引,获取到集合中每个元素 14 int n = list.get(i) ; 15 System.out.println(n); 16...} 17 } 18 } 上述代码中,5行定义了一可以存储int元素的集合;7-10行,实现将int类型数值存储到集合中;12-16行,实现遍历集合元素

1.6K40

(45) 神奇的堆 计算机程序的思维逻辑

前面几节介绍了Java中的基本容器类,每个容器类背后都有一种数据结构,ArrayList动态数组,LinkedList是链表,HashMap/HashSet是哈希表,TreeMap/TreeSet是红黑树...父子关系是隐含的,比如对于5元素13,其父节点就是2元素15,左孩子就是10元素7,右孩子就是11元素4。...先来看如何添加元素添加元素 如果堆为空,则直接添加根就行了。我们假定已经有一堆了,要在其中添加元素。基本步骤为: 添加元素到最后位置。...从头部删除元素 在队列中,一般是从头部删除元素,Java中用堆实现优先级队列,我们来看下如何在堆中删除头部,其基本步骤为: 用最后一元素替换头部元素删掉最后一元素。...由无序数组构建堆的过程heapify是一自底向上循环的过程,效率为O(N)。 查找和遍历就是对数组的查找和遍历,效率为O(N)。 小结 本节介绍了堆这一数据结构的基本概念和算法。

1.1K90

他连 ArrayList 的扩容机制都答不上来

但通常情况下,我们很难确定 ArrayList元素的个数,因此一般不指定初始大小。 “二哥,那怎么向 ArrayList添加元素呢?”三妹继续问。...可以通过 add() 方法向 ArrayList添加元素,如果不指定下标的话,就默认添加在末尾。...“那假如向 ArrayList 添加 11 元素呢?”三妹看到了问题的关键。...3)删除一元素(调用 remove(Object) 方法时)的时间复杂度为 O(n),因为要遍历列表,数据量增大几倍,耗时也增大几倍;如果是通过下标删除元素时,要考虑到数组的移动和复制所消耗的时间。...4)查找一未排序的列表时间复杂度为 O(n)(调用 indexOf() 或者 lastIndexOf() 方法时),因为要遍历列表;查找排序过的列表时间复杂度为 O(log n),因为可以使用二分查找法

49840

【153期】面试官:谈谈常用的Arraylist和Linkedlist的区别

Arraylist:底层是基于动态数组,根据下表随机访问数组元素的效率高,向数组尾部添加元素的效率高;但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组。...例如最坏的情况是删除第一数组元素,则需要将2至n个数组元素各向前移动一位。...而之所以称为动态数组,是因为Arraylist在数组元素超过其容量大,Arraylist可以进行扩容(针对JDK1.8 数组扩容后的容量是扩容前的1.5倍),Arraylist源码中最大的数组容量是Integer.MAX_VALUE...以下是Arraylist部分源码: Arraylist扩容: ? Arraylist添加数据:(向数组尾部添加) ? 向数组的指定位置添加数组: ?...Linkedlist基于链表的动态数组,数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历Arraylist get数据的源码:(根据下标访问,效率高) ?

1.8K20

【算法题解】 Day6 BFS | DFS

如果不为 0,则说明还有剩下的左括号没有匹配,对于每个剩下的左括号都需要添加右括号才能匹配,此时需要添加的右括号个数为剩下的左括号个数,将需要添加的右括号个数加到添加次数。...N 叉树的前序遍历 题目 589. N 叉树的前序遍历 难度:easy 给定一 n 叉树的根节点  root ,返回 其节点值的 前序遍历 。...在前序遍历中,我们会先遍历节点本身,然后从左向右依次先序遍历每个以子节点为根的子树。...在上述过程中的 i 次迭代就得到了二叉树的 i 层的 si 元素。 为什么这么做是对的呢?... 时性质成立,即 k 轮中出队 sk 的元素 k 层的所有元素,并且顺序从左到右。

18430

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day3】 —— 集合框架1

内存空间占用:LinkedList 比 ArrayList 更占内存,因为 LinkedList 的节点除了存储数据,还存储了两引用,一指向前一元素,一指向后一元素。...null元素,而set只允许插入一null元素; 容器是否有序   list是一有序的容器,保持了每个元素的插入顺序。...即输出顺序就是输入顺序,而set方法是无序容器,无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一排序顺序 常用的实现类 list方法常用的实现类有...List:   和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变   曾测试过1000万元素情况下,Set查询9999999元素用时0.203秒,...List查询9999999元素用时0.01秒; 追问2:说一下 HashSet 的实现原理?

37710

Java–LinkedList真的比ArrayList添加元素快?Open JDK JMH带你揭开真相「建议收藏」

(4)⭐ArrayList如何添加元素效率最高?...,还是从后往前,链表被循环遍历的次数都是最多的,效率最低,综合时间复杂度为O(n) 结尾: ArrayList 添加元素尾部,不需要进行复制重排数组数据,效率最高,时间复杂度为O(1) LinkedList...因为ArrayList添加元素时,主要会进行这两步操作,一是判断数组容量是否满足大小,二是在数组对应位置赋值,这2步操作在多线程访问时都存在安全隐患~ 1隐患是,判断数组容量是否满足大小的ensureCapacityInternal...elementData [size] = e;再进行size=size+1; 可能1线程刚赋值完,还没进行size+1,其他线程又对同一位置进行赋值,导致前面线程添加元素值被覆盖。...反三: ArrayList和LinkedList遍历的效率如何? String和StringBuilder字符串拼接效率如何? HashMap那种遍历方式的效率更高? 举一反三,你学废了?

51120

【Java 基础篇】Java ArrayList 简明教程:灵活管理数据集合

; // 返回 true,因为列表为空 ArrayList动态扩展 ArrayList的一重要特性是它可以动态扩展以容纳更多的元素。...当ArrayList的大小达到其初始容量时,它会自动增加容量以容纳更多元素。这个过程称为动态扩展。 动态扩展的好处是,我们不必关心ArrayList的大小限制,可以根据需要添加任意数量的元素。...使用ArrayList的示例 下面是一简单的示例,演示了如何创建、添加、删除和遍历ArrayList: import java.util.ArrayList; public class ArrayListExample...2的元素,即3元素 // 遍历元素打印 for (int i = 0; i < numbers.size(); i++) { System.out.println...(numbers.get(i)); } } } 上述示例创建了一存储整数的ArrayList添加了四元素,然后删除了第三元素,最后遍历ArrayList打印其内容。

42520

Java Collection与Map详解

new Person()://添加新的对象 集合 1)可以动态保存任意多个对象,使用比较方便 2)提供了一系列方便的操作对象的方法: add、remove、set、get 等 3)使用集合添加/删除新元素简洁了...(即添加顺序和取出顺序一致)、且可重复 List集合中的每个元素都有其对应的顺序索引,即支持索引。...10以上的元素(比如String “hello”),在2号位插入一元素"韩顺平教育”,获得5元素,删除6元素,修改7元素,在使用迭代器遍历集合,要求:使用List的实现类ArrayList...10以上的元素(比如String "hello" ),在2号位插入一元素"韩顺平教育", 获得5元素,删除6元素,修改7元素,在使用迭代器遍历集合, 要求...希望添加元素,按照字符串大小来排序 //3. 使用TreeSet 提供的一构造器,可以传入一比较器(匿名内部类)指定排序规则 //4.

1.2K10

JAVA面试备战(二)--集合

与泊松分布的关系:当负载因子=0.75,带入泊松分布公式中,计算出来长度为8时,概率=0.00000006,这个0.00000006概率已经很小了,所以链表长度为8时,转换成红黑树 当有哈希冲突时,HashMap是如何查找确认元素的...当一线程访问同步方法时,其他线程也访问同步方法,可能会进入阻塞或轮询状态,如使用 put 添加元素,另一线程不能使用 put 添加元素,也不能使用 get,竞争会越来越激烈效率越低。...请你说一说vector和list的区别 ArrayList 1、实现原理:采用动态对象数组实现,默认构造方法创建了一空数组 2、第一次添加元素,扩展容量为10,之后的扩充算法:原来数组大小+原来数组的一半...ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加元素、替换一元素、获取前面或后面元素的索引位置。...LinkedList采用的将对象存放在独立的空间中,而且在每个空间中保存下一链接的索引,但是缺点就是查找非常麻烦,要从第一索引开始 3、ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作

46610
领券