본문 바로가기
CS 이론/🤖 알고리즘, 자료구조

코딩 테스트 속도 높이기 : 내가 자주 쓰는 Java 문법 설탕(Syntax Sugar) 총정리

by 개발자 진개미 2022. 12. 14.
반응형

문법 설탕이 뭐야?

말하는건 똑같아도 짜증나게 말하는 사람이 있고, 듣기 좋게 말하는 사람이 있듯, 코드도 하는건 똑같아도 읽기 쉬운 코드가 있고 읽기 힘든 코드가 있습니다.

 

문법 설탕은 꼭 써야 하는건 아니지만 2가지 장점이 있어 알아두면 좋습니다.

 

1. 더 읽기 쉬운 코드를 쓸 수 있습니다.

2. 자주 쓰는 기능을 내가 직접 구현하지 않고 내장함수를 써 더 빠른 코딩이 가능합니다.

 


어떻게 활용할까?

우선, 문법 설탕이 아무리 코딩을 빠르게 해 주고 읽기 쉬운 코드를 만들어 준다고 해서 영어 단어 외우듯 외울 필요는 없다고 생각합니다. 대신, 저는 많이 써 보면 자연스럽게 적재적소에 활용할 수 있게 됐습니다.

 

자연스럽게 활용하기 위해 추천하는건 항상 코딩 테스트나 코드를 작성하고 리팩토링(Refactoring)을 잠깐이라도 해 보는 습관을 가지는게 중요합니다.

 

리팩토링을 할 때는 아래 3가지 요소에 집중해 보세요.

 

  • 더 읽기 쉽게 할 수는 없을까? (가독성 있는 변수명, 너무 길거나 공통된 코드는 함수로)
  • (가독성을 해치지는 않으면서) 짧게 쓸 방법은 없을까?
  • 내가 직접 구현한게 내장함수에 이미 있지는 않을까?

 

또, 내가 자주 쓰는 문법 설탕은 Notion 같은 곳에 내 방식대로 한 페이지에 정리해 놓으면 참고가 많이 됐습니다.


데이터 타입 변환 관련 문법 설탕

 String -> Char Array

exampleString.toCharArray();

Char Array -> String

String.valueOf(exampleCharArray);

String Array -> String

String.join("", exampleStringArray);

List<Integer> -> int[]

exampleList
	.mapToInt(Integer::intValue)
	.toArray();

String 관련 문법 설탕

어떤 String이 다른 String의 일부분인지 확인

str1.matches("(.*)" + str2 + "(.*)")

String 거꾸로 뒤집기

new StringBuilder(exampleString).reverse().toString();

String이 Integer인지 확인

.matches("-?\\d+");

Array 관련 문법 설탕

Array가 특정 원소가 있는지 판단하기

Arrays.asList(array).contains(element);

Stream API 문법 설탕

Array에서 특정 원소 몇 번 나오는지 셀 때

(int) exampleArray.stream()
    .filter(조건)
    .count();

String Stream -> String

exampleStringStream.collect(Collectors.joining());

2D Array Stream -> 1D Array Stream

.flatMap(Collection::stream)

Collection API의 Map 문법 설탕

뭐가 몇 개 있는지 셀 때 : 해당 값이 없으면 1을 넣고, 있으면 이미 있는 값에 1 더하기

exampleMap.merge(key, 1, Integer::sum);

Map을 선언하면서 기본값 부여 (최대 10개)

Map<String, String> exampleMap = Map.of(k1, v1, k2, v2, k3, v3 등);

주의할 점

보기는 편해도, 일부 문법 설탕은 속도가 불리한 경우가 있습니다. 성능이 중요한 경우, 가독성을 어느정도 희생하더라도 성능을 신경 쓸 필요가 있습니다.


반응형

댓글