如何比较两个ArrayList并提取索引位置相同且元素值一致的索引?(附代码演示)(已解决)
比对两个日期ArrayList,提取索引位置与元素均匹配的索引
如果你需要对比两个存储日期的ArrayList,找出那些索引位置相同且对应日期元素完全一致的索引,下面这个Java实现可以帮你完成需求——它会先随机生成两组日期列表,再在生成第二组列表的过程中实时比对对应索引的元素,匹配时做出标记。
import java.util.ArrayList; // 此代码将生成随机日期,并分别存入两个不同的ArrayList,同时标记出索引和元素均匹配的位置 public class similarIndexes { public static void main(String[] args) { // 用于存储日期的两个主ArrayList: ArrayList<String> birthdates1 = new ArrayList<String>(); ArrayList<String> birthdates2 = new ArrayList<String>(); // 为随机生成器定义年份、月份和日期的最大最小值: int maxY = 2010; int minY = 2020; int maxM = 12; int minM = 1; int maxD = 30; int minD = 1; // 使用for循环生成日期并添加至第一个ArrayList,然后遍历内容并打印: System.out.println("First List: "); for(int i = 0; i < 51; i++) { // 生成随机日期,添加至ArrayList并遍历打印: int Year = (int)(Math.random() * (maxY - minY + 1) + minY); int Month = (int)(Math.random() * (maxM - minM + 1) + minM); int Day = (int)(Math.random() * (maxD - minD + 1) + minD); birthdates1.add(Day+ "/" +Month+ "/" +Year); System.out.println("Index ["+i+"] Contains a date of: " +birthdates1.get(i)); } // 与第一个for循环逻辑相同,生成日期存入第二个ArrayList并遍历打印: System.out.println(); System.out.println("Second List: "); for(int i = 0; i < 51; i++) { // 生成随机日期,添加至ArrayList并遍历打印: int Year = (int)(Math.random() * (maxY - minY + 1) + minY); int Month = (int)(Math.random() * (maxM - minM + 1) + minM); int Day = (int)(Math.random() * (maxD - minD + 1) + minD); birthdates2.add(Day+ "/" +Month+ "/" +Year); System.out.println("Index ["+i+"] Contains a date of: " +birthdates2.get(i)); // 新增if条件,当检测到两个索引对应值相同时,打印箭头指向该索引: if(birthdates1.get(i).equals(birthdates2.get(i))) { System.out.print(" <--------------------- 该索引的日期与第一组列表完全匹配"); } System.out.println(); // 换行保证格式清晰 } } }
关键细节说明:
- 我们用
ArrayList<String>来存储格式化后的日期字符串,方便直接用equals()方法做内容比对 - 随机日期的生成范围可以根据需求调整:比如修改
maxY和minY来改变年份区间,maxD可以根据月份调整为实际的最大天数(当前代码简化为固定30天) - 在第二组列表的生成循环中,每生成一个元素就立刻和第一组同索引的元素比对,匹配时打印标记,直观展示结果
- 循环次数设为51,你可以根据需要修改这个数值来生成不同长度的列表
内容的提问来源于stack exchange,提问作者Abdelrahman Tawfik
相关产品推荐
相关产品推荐

