본문 바로가기

JAVA

JAVA(06.25) - TDD 다항식 계산기(재귀함수, map)

재귀함수

  • 재귀함수는 함수 안에 자신의 함수를 다시 호출하는 함수를 말한다.
    public static int run(String exp) {
    .
    .
    
 if (needToCompound) {
            String[] bits = exp.split(" \\+ ");

            return Integer.parseInt(bits[0]) + run(bits[1]);
        }
        .
        .
    }    


map

  • map은 Stream의 요소들을 내가 사용할 형태로 바꾸거나, 사용할 요소를 뽑아내는 것

mapToInt()

  • String을 int로 바꿔준다. mapToInt전까지 Stream 형태, mapToInt를 통해여 IntStream으로 바뀐다.
  • map과 mapToInt는 속도 차이가 심하다. 자바에서 원시타입(primitive type)과 참조타입(reference type(object))을 다루는 방식 때문이다.

mapToObj()

  • 원시 타입 스트림을 참조(객체)타입 스트림으로 변경
if (needToCompound) {
          String[] bits = exp.split(" \\+ ");

          String newExp = Arrays.stream(bits) // Stream<String>
                  .mapToInt(Calc::run) // IntStream
                  .mapToObj(e -> e + "") // Stream<String>
                  .collect(Collectors.joining(" + "));

          return run(newExp);
      }