是否可以在"Function.apply"方法中获取List中当前项的索引?

Ale*_*ndr 1 java transform guava

我正在尝试应用"转换" List <Map <String, String>>.在" Function.apply"方法中是否可以获取List中当前项的索引?

Lists.transform(data, new Function<Map<String, String>, Map<String, String>>() {
        private static int index = 0;

        @Override
        public Map<String, String> apply(Map<String, String> from) {
            from.put(key, value); // need to get index
            return from;
        }
    });
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 8

通常在Java中,使用循环更简单,更清晰.

List<Map<String, String>> data = ...
for(int i = 0; i < data.size(); i++) {
    // i is the index.
    data.get(i).put(key, value);
}
Run Code Online (Sandbox Code Playgroud)

我应该说我赞成使用支持它的语言进行函数式编程.Java 7不适合函数式编程,有时你不得不求助于迭代.Java 8和9承诺在添加闭包时更加功能性编程.

恕我直言Java甚至不支持递归以及许多语言.JVM中缺少尾调用是一个缺陷.