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

标签 java transform guava

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

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;
        }
    });

最佳答案

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

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

我应该说我赞成使用支持它的语言进行函数式编程。 Java 7 不太适合函数式编程,有时您不得不求助于迭代。 Java 8 和 9 promise 通过添加闭包对函数式编程更加友好。

恕我直言,Java 甚至不像许多语言那样支持递归。缺少tail call elimination在 JVM 中是一个缺陷。

关于java - 是否可以在 "Function.apply"方法中获取List中当前项的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929531/

相关文章:

java - ImmutableList.builder() 错误?

java - 从 ECDSA 签名中放置和提取文本

java - 图像变换导致红色图像?

css - Firefox 3.6 上的 CSS3 Transform 稳定吗?

xml - 如何使用 XSL 转换器仅翻译选定的 XML 元素

java - Guava CharMatcher - 扩展 ASCII 定义

java - Guava 对象列表中 object.attribute 的最小值/最大值

java - 使用 gm4java 在单个进程中进行多个图像操作

java - 在已部署的 java war 文件之外配置文件是否安全?

google-chrome - -webkit-转换 : rotateY fails on Mac OS (in Chrome)