【问题标题】:How to start iterating through ArrayList from set index? [closed]如何从集合索引开始遍历 ArrayList? [关闭]
【发布时间】:2013-12-07 02:10:02
【问题描述】:

我有一个ArrayList,我想从索引 100 开始遍历它,直到结束。我该怎么做?

【问题讨论】:

  • for(int i = 100; i < array.size(); i++) ?
  • 我该怎么做? 一个很好的起点是学习 for 循环如何工作以及如何从给定索引的 ArrayList 中读取值。
  • 为什么投反对票?这是一个有效的问题
  • @RossDrew “没有显示任何研究工作”。 IE。没看过List的文档...
  • 即使 OP 已经阅读了它,但我认为给出的答案对初学者来说并不明显。

标签: java performance arraylist


【解决方案1】:

有很多方法可以做到这一点。在此示例中,我假设您的列表包含整数。

  1. 你可以使用 ListIterator

    ListIterator<Integer> it = list.listIterator(100);
    while (it.hasNext()) {
        System.out.println(it.next());
    }
    

    或使用for(以保持迭代器范围在循环内)

    for (ListIterator<Integer> lit = list.listIterator(100); lit.hasNext();) {
        System.out.println(lit.next());
    }
    
  2. 或正常的for循环,但从i=100开始

    for (int i=100; i<list.size(); i++){
        System.out.println(list.get(i));
    }
    
  3. 或者像往常一样创建 subList 并对其进行迭代

    for (Integer i : list.subList(100, list.size())){
        System.out.println(i);
    }
    

【讨论】:

  • 为什么在第一个例子中是whilefor 将保持 it 的适当范围。
  • @MarkoTopolnik 这确实很好,但我不想将 OP 与不必要的信息混淆。但也许你是对的,将它添加到答案中。
【解决方案2】:

使用ListIterator

ListIterator<Type> iter = list.listIterator(start);

【讨论】:

    【解决方案3】:

    使用ListIterator。并阅读 API 文档,谢谢。

    ListIterator<YourType> iter = list.listIterator(start);
    

    【讨论】:

    • 最合适的方式是针对子列表增强的!
    • @MarkoTopolnik 不,这将创建更多的对象和间接。使用迭代器并没有错——“增强” for 只是使用迭代器的捷径。
    • 我想我的讽刺对你失去了意义☺
    【解决方案4】:

    尝试像这样迭代一个范围:

    for(int i=100; i< myArrayLst.size(); i++){
        System.out.println(myLst.get(i));
      }
    

    【讨论】:

      【解决方案5】:

      您始终可以使用@987654321@ 方法

      list.subList(100,list.size()).iterator();
      

      【讨论】:

        猜你喜欢
        • 2017-02-21
        • 2020-06-23
        • 2016-01-09
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-24
        相关资源
        最近更新 更多