首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中有没有与Python的“enumerate”函数等效的函数?

Java中有没有与Python的“enumerate”函数等效的函数?
EN

Stack Overflow用户
提问于 2011-08-24 04:39:33
回答 8查看 29.8K关注 0票数 81

在Python语言中,enumerate函数允许您遍历一系列(索引、值)对。例如:

代码语言:javascript
复制
>>> numbers = ["zero", "one", "two"]
>>> for i, s in enumerate(numbers):
...     print i, s
... 
0 zero
1 one
2 two

在Java中有什么办法做到这一点吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-08-24 04:41:27

对于实现List接口的集合,可以调用listIterator()方法来获取ListIterator。迭代器有两个方法-- nextIndex(),获取索引;next(),获取值(和其他迭代器一样)。

因此,上面的Python的Java等效项可能是:

代码语言:javascript
复制
import java.util.ListIterator;  
import java.util.List;

List<String> numbers = Arrays.asList("zero", "one", "two");
ListIterator<String> it = numbers.listIterator();
while (it.hasNext()) {
    System.out.println(it.nextIndex() + " " + it.next());
}

它和Python一样,输出如下:

代码语言:javascript
复制
0 zero
1 one
2 two
票数 67
EN

Stack Overflow用户

发布于 2013-01-25 21:30:19

根据Python文档(here),这是您能获得的最接近Java的代码,并且不再冗长:

代码语言:javascript
复制
String[] numbers = {"zero", "one", "two"}
for (int i = 0; i < numbers.length; i++) // Note that length is a property of an array, not a function (hence the lack of () )
    System.out.println(i + " " + numbers[i]);
}

如果您需要使用List类...

代码语言:javascript
复制
List<String> numbers = Arrays.asList("zero", "one", "two");
for (int i = 0; i < numbers.size(); i++) {
    System.out.println(i + " " + numbers.get(i));
}

*注意:如果在遍历列表时需要修改列表,则需要使用迭代器对象,因为它可以在不引发ConcurrentModificationException的情况下修改列表。

票数 5
EN

Stack Overflow用户

发布于 2017-10-13 09:55:52

简单明了

代码语言:javascript
复制
public static <T> void enumerate(Iterable<T> iterable, java.util.function.ObjIntConsumer<T> consumer) {
    int i = 0;
    for(T object : iterable) {
        consumer.accept(object, i);
        i++;
    }
}

示例用法:

代码语言:javascript
复制
void testEnumerate() {
    List<String> strings = Arrays.asList("foo", "bar", "baz");
    enumerate(strings, (str, i) -> {
        System.out.println(String.format("Index:%d String:%s", i, str));
    });
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7167253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档