stream foreach 获取下标
时间: 2023-10-16 11:00:40 浏览: 58
回答: 要在stream的forEach中获取下标,可以使用Stream的IntStream.range方法来生成一个下标的流,然后在forEach中使用下标来获取元素。下面是一个示例代码:
List<String> list = new ArrayList<>();
list.add("10");
list.add("20");
list.add("30");
list.add("40");
list.add("50");
IntStream.range(0, list.size()).forEach(i -> {
String s = list.get(i);
System.out.println("数组下标" + i + "|" + "数组元素" + s);
});
这段代码使用IntStream.range生成了一个从0到list.size()-1的下标流,然后在forEach中使用下标i来获取对应的元素。输出结果会打印出每个元素的下标和值。
相关问题
stream foreach拿到下标
在C#中,Stream类是用于读取和写入字节流的抽象基类,它不提供直接获取下标的方法。但是你可以使用其他方式来实现在Stream中获取下标的功能。
一种常见的方法是使用一个计数器变量来记录当前读取或写入的位置。你可以在循环中递增计数器变量,并在每次迭代中使用它来表示当前的下标。
以下是一个示例代码,展示了如何使用foreach循环和计数器变量来获取Stream中的下标:
```csharp
using System;
using System.IO;
class Program
{
static void Main()
{
// 创建一个MemoryStream作为示例
byte[] data = { 1, 2, 3, 4, 5 };
using (MemoryStream stream = new MemoryStream(data))
{
int index = 0; // 计数器变量
foreach (byte b in stream.ToArray())
{
Console.WriteLine($"Index: {index}, Value: {b}");
index++;
}
}
}
}
```
在上面的示例中,我们创建了一个包含5个字节的MemoryStream,并使用foreach循环遍历每个字节。在循环中,我们打印出当前的下标和对应的字节值,并递增计数器变量index。
java中forEach获得下标
在Java中,使用forEach循环遍历集合时,是无法直接获取下标的。但是,可以通过使用Java 8引入的Stream流来实现获取下标的功能。具体实现方法如下:
```java
List<String> list = Arrays.asList("A","B","C");
IntStream.range(0, list.size())
.forEach(i -> System.out.println(i + ": " + list.get(i)));
```
上述代码中,使用`IntStream`的`range`方法生成了一个从0到`list`集合大小之间的整数流,并通过`forEach`方法对其进行遍历。在遍历的过程中,使用`i`表示当前元素的下标,通过`list.get(i)`方法获取对应下标的元素值,并将其打印出来。
注意:使用`forEach`方法时,不能直接修改集合的元素值,否则会抛出`ConcurrentModificationException`异常,需要使用迭代器或者其他方式进行修改。