1

に「変換」を適用しようとしています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;
        }
    });
4

2 に答える 2

8

Often in Java, using a loop is much simpler and cleaner.

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

I should say that I am in favour of functional programming in a language which supports it. Java 7 is not well suited for functional programming and sometimes you have to resort to iteration. Java 8 and 9 promises to be more functional programming friendly with the addition of closures.

IMHO Java doesn't even support recursion as well as many languages do. A lack of tail call elimination in the JVM is a deficiency.

于 2012-10-17T07:56:31.157 に答える
0

Function.applyを返すように設計されている場合Map、メソッドのシグネチャを動的に変更するにはどうすればよいですか?Einstienを実行する必要がない場合は、できるだけ単純にするようにしてください。ピーター氏が提案したように、ループの使用を検討することができます。また、メソッドがMapを返し、実際に文字列を返しているため、コードがコンパイルされないように感じます。

于 2012-10-17T08:03:21.253 に答える