当前位置: 首页 > 知识库问答 >
问题:

Java/Guava-在Iterable/Iterator的特定索引处启动和停止

宗政博文
2023-03-14

我正在寻找一种优雅的方式,可能是用Guava来包装一个迭代/迭代器,这样新的迭代/迭代器

  • 从某个索引开始,并且
  • 在某个索引处停止。

Guava似乎具有限制输入的功能(http://docs.guava-libraries.googlecode.com/git/javadoc/comm/google/common/collect/iterables.html#limit(java.lang.iterable,%20int),但不能从给定的索引开始。

你会怎么做?

共有1个答案

孙和安
2023-03-14

为此,您可以使用skip

返回跳过其第一个numberToSkip元素的iterable视图。

例如,下面将给出一个迭代,它跳过前两个元素,然后将其限制为五个NEXT元素:

List<Integer> list = [0, ..., 10];
Iterable<Integer> iterable = Iterables.limit(Iterables.skip(list, 2), 5); //[2, 3, 4, 5, 6]
 import static com.google.common.collect.Iterables.limit;
 import static com.google.common.collect.Iterables.skip;

 ...

 static <T> Iterable<T> bounded(Iterable<T> iterable, int startIndex, int lastIndex) {
     return limit(skip(iterable, startIndex+1), lastIndex-startIndex);
 }

 bounded(list, 2, 5)//[3, 4, 5]
static <T> Iterable<T> bounded(Iterable<T> iterable, int startIndex, int lastIndex) {
      return StreamSupport.stream(iterable.spliterator(), false)
                          .skip(startIndex+1)
                          .limit(lastIndex-startIndex)
                          .collect(Collectors.toList());
}
 类似资料:
  • 我是scala新手,想知道如何在scala中的特定索引处启动foreach循环?我的代码目前看起来像这样: 这里的“列表”包含字符串列表[“一”、“二”、“三”、“四”、“五”]。而不是从列表的开始,我希望我的每一个循环从索引i开始操作,忽略所有的VAUES在前面(即只考虑值“四”和“五”)。 谁能帮帮我吗?提前谢谢

  • 问题内容: 我试图了解Java 和接口 我正在写这堂课 它似乎正在工作。 我应该有: 或者我应该把外面的 哪一个更好? 问题答案: 你应该几乎 从来没有 同时实现,并在同一个班。他们做不同的事情。迭代器自然是 有状态的 -当您迭代使用它时,它必须更新其世界观。但是,迭代器仅需要能够创建新的迭代器。特别是,您可能有多个迭代器同时处理同一个原始可迭代对象。 您当前的方法几乎可以-我会更改实现的某些方面

  • 我对Java还很陌生,今天我试图理解迭代器的使用。 所以我有几个问题: > 为什么我需要实现Iterable呢?它只提供了一个为集合创建新迭代器的方法,但如果我想获取所有元素,我也可以使用普通的或增强的for循环。我已经读过这个问题:可迭代接口用于什么?还有更多,但他们只是说它允许你遍历所有元素,这又回到了我的问题。 如果我实现了Iterable,我也应该实现迭代器吗 因为这一个实际上提供了可用于

  • 本文向大家介绍在Java中将Iterator转换为Iterable,包括了在Java中将Iterator转换为Iterable的使用技巧和注意事项,需要的朋友参考一下 假设以下是具有整数值的迭代器- 现在,将Iterator转换为Iterable- 示例 以下是在Java中将Iterator转换为Iterable的程序- 输出结果

  • 问题内容: 我有一个包含两个“ 0”(str)的字符串,我只想删除索引4处的“ 0”(str) 我尝试调用.replace,但是显然删除了所有的“ 0”,并且我找不到能为我删除第4位字符的函数。 有人对我有提示吗? 问题答案: 使用切片,重建字符串减去要删除的索引:

  • 有没有一个函数可以在字符串的特定索引处替换一个字符串内的一个字符串一次?示例: 结果输出将是“我的文本是我的文本,你的大文本”