java
-
프로그래머스 : 공백으로 구분하기 2코딩테스트 문제 풀이/프로그래머스 2023. 12. 4. 00:01
이번 문제는 생각보다 어려웠다. 공백 문자가 연속으로 여러개 나오는 경우도 있었기 때문에 어렵게 느껴졌던 것 같다. 내 코드 얻어걸림.. import java.util.Arrays; import java.util.stream.*; class Solution { public String[] solution(String my_string) { return Arrays .stream(my_string.split(" ")) .filter(s -> !"".equals(s)) .collect(Collectors.toList()) .toArray(new String[0]); } } 우와 스트림으로 풀이한 다른사람의 풀이가 있는지 구경하러 들어갔다가 정규식을 이용해 깔끔하게 풀이한 사람의 코드를 발견하였다. 정규식 이..
-
lombok : @Builder , @SuperBuilderSpring Boot 🍃 2023. 12. 1. 00:01
강의 실습 중에 도메인 패키지의 엔티티 파일들에서 공통으로 사용되는 메타 필드를 하나의 파일로 분리해서 상속받아 사용하는 부분이 있었는데, 이 때 @Builder 어노테이션 사용 시 엔티티를 builder()로 호출해서 사용할 때 상속하는 엔티티의 필드를 사용할 수 없는 문제가 있었다. 검색해보니 @Builder는 해당 어노테이션이 붙은 클래스에 있는 필드만 사용할 수 있게 해주고, 해당 클래스의 부모 클래스의 필드는 무시된다고 한다. 부모 자식 클래스에 속한 모든 필드에 대해서 builder()를 적용하려면 @SuperBuilder 어노테이션 사용시 가능해진다고 한다. @Builder 각 필드에 대한 Setter 메서드를 포함하는 빌더 클래스를 생성하도록 Lombok에 알려주는 어노테이션이다. 이 어노..
-
Mockito : ArgumentCaptorSpring Boot 🍃 2023. 12. 1. 00:01
Mockito🍸의 mocking에 사용되는 클래스이다. 메서드 호출에 사용되는 인자에 대해서 검증하고 싶을 때, ArgumentCaptor 를 사용할 수 있다. 과제 프로젝트에 사용된 부분을 가져와서 본다면 // given ArgumentCaptor captor = ArgumentCaptor.forClass(Transaction.class); // when transactionService.saveFailedUseTransaction("1000000000", USE_AMOUNT); // then verify(transactionRepository, times(1)).save(captor.capture()); assertEquals(USE_AMOUNT, captor.getValue().getAmount()..
-
UUID.randomUUID()Language/Java 2023. 12. 1. 00:01
보고 배운 곳 : offbyone.tistory UUID 클래스를 사용해서 유일한 식별자를 생성할 수 있다. 숫자 일련번호를 사용한 식별자도 각각의 데이터를 구분하는데 충분하지만, 다른 데이터를 유추하기 쉽다는 단점이 있다. UUID는 아래 3가지 경우에 사용 될 수 있다. 업로드된 파일명의 중복을 방지하기 위해 파일명을 변경할 때 사용. 첨부파일 파일 다운로드시 다른 파일을 예측하여 다운로드하는것을 방지하는데 사용. 일련번호 대신 유추하기 힘든 식별자를 사용하여 다른 컨텐츠의 임의 접근을 방지하는데 사용. UUID 클래스의 randomUUID() 메서드를 호출해야 하고, 이 때 반환값이 객체이기 때문에, 문자열 값만 필요할 경우 toString() 메서드를 활용해주어야 한다. UUID.randomUUI..
-
배열의 원소만큼 추가하기코딩테스트 문제 풀이/프로그래머스 2023. 12. 1. 00:01
그냥 풀면 쉬운 문제인데 Stream을 사용하려고 하니까 너무 어려운 문제였다. Chat 코드 🙈 import java.util.Arrays; import java.util.stream.IntStream; class Solution { public int[] solution(int[] arr) { return Arrays .stream(arr) .boxed() .flatMapToInt(i -> IntStream.range(0, i).map(n -> i)) .toArray(); } } int 배열을 boxed()를 사용해서 wrapper 객체 배열로 변환 한 뒤, flatMapToInt() 메서드를 사용하여 값을 만들고 toArray() 메서드를 사용하여 int배열로 반환하는 코드를 만들어냈다. flatM..
-
꼬리 문자열코딩테스트 문제 풀이/프로그래머스 2023. 12. 1. 00:01
내 코드 import java.util.Arrays; import java.util.stream.Collectors; class Solution { public String solution(String[] str_list, String ex) { return Arrays .stream(str_list) .filter(s -> !s.contains(ex)) .collect(Collectors.joining()); } } 오 세상에 또 풀렸다 진짜 기분 좋음 🤓✏️ 새로 알게 된 메서드 collect(Collectors.joining()) 스트림의 모든 요소를 하나의 문자열로 합쳐주는 기능을 한다. 이 메서드는 3가지 형태로 사용할 수 있다. 1. 기본형태 collect(Collectors.joining()..
-
뒤에서 5등까지코딩테스트 문제 풀이/프로그래머스 2023. 12. 1. 00:01
내 코드 import java.util.Arrays; class Solution { public int[] solution(int[] num_list) { return Arrays .stream(num_list) .sorted() .limit(5) .toArray(); } } 와우 스트림으로 처음 풀어봄! 🙈 뭔가 디비 쿼리짜는 기분이다 🙊 그런데 소요 시간이 많이 길어진 느낌이 들어서 확인해보았다. 👇이건 스트림으로 작성한 결과 이건 스트림 사용하지 않고 Arrays만 사용 import java.util.Arrays; class Solution { public int[] solution(int[] num_list) { Arrays.sort(num_list); return Arrays.copyOf(num..
-
StreamLanguage/Java 2023. 12. 1. 00:01
스트림이란? 배열, 컬렉션 대상으로 연산을 수행 컬렉션은 기본으로 stream()을 호출할 수 있다. 배열은 Arrays 이용! 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 한다. 자료 처리에 대한 추상화가 구현되었다고 한다. 한번 생성하고 사용한 스트림은 재사용 할 수 없음 스트림 연산은 기존 자료를 변경하지 않는다. 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행되도 기존 자료에 대한 변경은 발생하지 않는다. 스트림 연산은 중간 연산과 최종 연산으로 구분된다. 중간 연산은 여러 개의 연산이 적용될 수 있지만, 마지막 연산은 단 하나만 적용할 수 있다. 최종 연산이 호출되어야 중간 연산에 대한 수행이 이루어 지고 , 그 결과가 만들어진다. 이런 연산을 ..
-
MockitoSpring Boot 🍃 2023. 12. 1. 00:01
컨셉이 정말 재밌는 프레임 워크다 😆 모킹?목킹?마킹? 맛있는 모킹 프레임워크! 사이트에 가보면 숙취 없는 맛이 정말 좋은 모킹 프레임워크라고 소개하고있다. 🙈🍸 근데 모킹이 뭐지; 모르는게 너무 많다 ㅋㅋ 🙈 모킹 Mocking 세상에 🙊 조롱이란 뜻이었다. 디비를 조롱하는건가.........??!?!? 놀라워서 앵무새한테 번역을 부탁해봤더니 흉내내는 이라는 뜻도 있었다. 여기서 사용된 모킹은 흉내내는 이라는 의미겠지! Mock Object 모의 객체 모의 객체 Mock Object란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트 할 경우 테스트를 수행 할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듈을 흉내내는 가짜 모듈을 작성하여 테스트의 효..