2011-08-31 2 views
4

Guava와 Apache Commons를 비교 한 일부 게시물을 읽었으며 대부분의 포스터는 Guava를 사용하는 것을 선호합니다.Guava Collections2 변환 방법을 사용하여 Apache CollectionUtil.forAllDo로 작동

나는 구아바와 아파치 커먼즈의 능력을 결합해야 할 필요가 있음에도 불구하고 구아바를 선호한다.

예를 들어 컬렉션의 모든 요소에 대해 작업을 수행하려고합니다.
구아바를 사용하여 수행 할 수있는 유일한 방법은 transform 메서드를 호출하는 것입니다.
그러나 Function을 사용하면 값을 가져오고 다른 값을 반환하지만 다른 값은 반환하지 않아도됩니다.
예를 들어 컬렉션을 변경하지 않고 Map에 새로운 항목을 추가하기 만하면됩니다. Apache Commons를 사용하면 CollectionUtils.forAllDo을 사용할 것입니다.

일부 값을 반환하지 않고도 CollectionUtils.forAlDo과 동일한 효과를 얻으려면 어떻게해야합니까?

답변

9

나는 돌연변이에 대해 간단한 foreach 루프를 사용하는 것이 좋습니다. 구아바는 부작용을 좋아하지 않으며 독자는 비 관용적 코드 만 혼동하게됩니다.

사례를 처리하기 위해 구아바에는 도우미와 함께 apply(T): void 방법으로 Effect<T> 인터페이스가 있어야합니다.

+0

아니면 그냥 커먼즈 콜렉션을 사용해야하고 끝내야합니까? – AAaa

+0

나는 그렇지 않다. 구아바와 커먼즈 콜렉션을 같은 장소에 두는 것은 지저분 해 보입니다. 차라리'Effect'를 쓰고 싶습니다. – dm3

관련 문제