forEach子句遍历Vector的索引

Ste*_*ers 3 java foreach vector

我有这样的方法:

public void addVector(Vector myVector) {
    if (myVector == null) {
        return;
    }

    Collection<String> values = new ArrayList<>();

    for (int i = 0; i < myVector.size(); i++) {
        values.add(((String[]) myVector.get(i))[1]);
    }

    this.addItems(values);
}
Run Code Online (Sandbox Code Playgroud)

对于我的一生,我不知道该如何使用forEach子句。是否可以通过forEach循环中的索引[i]进行迭代?

Era*_*ran 6

如果使用增强的for循环,则不需要索引:

for (Object obj : myVector) {
    values.add(((String[]) obj)[1]);
}
Run Code Online (Sandbox Code Playgroud)

当然,最好使用参数化类型(Vector<String[]>)并避免强制转换。

或者,如果您的意思是实际forEach方法:

myVector.forEach(o -> values.add(((String[]) o)[1]));
Run Code Online (Sandbox Code Playgroud)

甚至更好的是使用Streamwith collect代替forEach:

List<String> values = 
    myVector.stream()
            .map(o -> (String[]) o)[1])
            .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)