2010-03-25 2 views
0

javadoc을 통해 읽었으며 유사한 내용을 찾을 수 없습니다.Google Collections API에는 Ruby Enumerable # inject 메소드와 동일한 기능이 있습니까?

+0

가난한 자바 사용자들에게'Enumerable # inject'이하는 일은 ... – skaffman

+1

@skaffman : http://en.wikipedia.org/wiki/Fold_(higher-order_function) –

+0

다른 라이브러리 (Jaggregate)는 http://jaggregate.sourceforge.net/javadoc/jaggregate/Collection.html#inject%28R,%20jaggregate.BinaryFunctor%29 – Yardena

답변

2

아니요.

특정 기능 프로그래밍 요소 (Predicate, Function)가 있지만 특정 요구 사항을 지원하는 것이었고 핵심 초점은 Java의 기능 프로그래밍 요소를 추가하지 않는 것입니다 (현재 매우 맹렬한 방법으로 보았습니다). 그것에 관해서는 this issue을 참조하십시오.

0

나는 당신이 정확한 분사 방법이 없다는 생각 ...하지만 당신은 당신이 임시 정의 Function 클래스가 필요합니다 물론

Maps.transformValues(Map<K,V1> fromMap, Function<? super V1,V2> function) 
List.transform(List<F> fromList, Function<? super F,? extends T> function) 

를 제공 transformValues와 방법을 사용하여 유사한 솔루션을 얻을 수 있습니다 전달 된 매개 변수를 사용하여 작업 할 수 있습니다.

class MyFunction<Type, Type> 
{ 
    static String variable; 

    Type apply(Type t) 
    { 
    //do whatever you want with t 
    // and storing intermediate result to variable 

    // return same t to make this function work like identity 
    return t; 
    } 

} 
+0

나는 당신이 훨씬 나아질 것이라고 생각합니다. 자신의 Reducer 인터페이스 및 정적 축소 메소드 작성. 그것은 너무 어렵지 않고 적어도 해킹이되는 것이 아니라 당신의 의도를 분명히합니다. – ColinD

+0

의심의 여지가 있지만 어쩌면 이런 방식으로 * 최적화 된 접근 방식이어야합니다. – Jack

관련 문제