유리쯔의일상 2023. 9. 24. 01:25
반응형
개쪼렙 개바린이예여 개바린..✨

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇

 

 

 

 

 

 

 

 

단어 뒤집기

 

 

 

 

 

 

문제 해결 순서 정하기


-  초반, 문제 해결을 위한 처리고민
1. 입력된 숫자만큼 String 배열 생성
2. 입력된 숫자 만큼 String 배열에 각각 문자 입력하기
3. 배열에 들어간 각각의 문자를 뒤집는 처리하기
4. 뒤집힌 문자 출력하기

-  중간쯤 고민
1. String 객체는 Immutable 클래스이다. 기존 문자열을 변경 시 새로운 문자열을 생성한다는 뜻이다. 그럴 경우 메모리 관리 차원 측면에서 지금처럼 저장된 데이터를 변경하고 재 저장 시 좋은 방법은 아닌 것 같다
2. 문자열을 어떻게 뒤집을 것인가?

-  끝날 때 쯤 고민
1. 문제 제출 시 컴파일 오류와 런타임 오류가 발생되었다 , 기존 채점 방식과 맞지 않는 방식으로 처리되어 발생된 문제 같았다 (클래스 호출로 사용해야 함)
2. String 배열을 어떻게 매개변수로 보낼 것 인가?
3. 리턴타입을 어떻게 처리해야 할 것인가?

 

 

 

 

 

 

 

StringBuilder

String과 StringBuilder는 사용 용도가 다르다고 한다.


String : immutable클래스, 각 char를 수정하거나 접근할 수 없다 


StringBuffer : thread-safe 하고 수정가능한 char배열, 멀티스레드(동기적)에 사용한다
여러 스레드로부터 입력이 동시다발적으로 들어와도, 순차적으로 입력시켜 준다


StringBuilder : thread-safe 하지 않지만, 수정 가능한 char배열, 싱글스레드(비동기적)에 사용한다
멀티스레드 기능이 없기 때문에 스레드 간 충돌이나 오류로 오는 손실을 막을 수 없어서 누락가능성이 있다
단, 싱글스레드가 속도가 빠르다

 

 

 

 

 

 

 

 

 

reverse(). toString()

문자열을 뒤집는 방법은 반복문과 StringBuffer & revers() 메서드를 사용하면 된다
StringBuffer클래스의 revers 메소드를 사용 시
문자열을 거꾸로 뒤집어 다시 반환해 준다
reverse메서드는 StringBuffer 객체를 반환해 주기 때문에 toString()을 사용하여 형변환을 해준다 

 

 

 

 

 

 

 

 

 

 

 

Array.stream(배열명). forEach

Stream은 컬렉션에서 저장된 요소를 하나씩 꺼내 람다식으로 처리하는 반복자이다.
람다식에 대한 사용 시 컬렉션, 스레드에 대한 이해를 먼저 해야 한다
Stream동작은 Collection(ArrayList, Set, Map..), 배열, 가변 매개변수, 특정 타입 난수, 람다 표현식, 파일, 빈 스트림등 다양하게 가공할 수 있
java에서 반복자는 보통 Iterator(java.utill)이고, 스트림은 java.util.stream패키지에 속한 인터페이스이다
스트림과 컬렉션은 집합에 대한 클래스이고 , 컬렉션이 요소를 할당하고 관리하는데 목적이 있다면
스트림은 요소를 검색하거나 값을 처리하는데 목적이 있다.

Iterateor과 비슷한 방식으로 동작한다.
스트림이 제공하는 연산은 중간, 최종 연산으로 분류하는데 중간 연산은 연산 결과를 스트림으로 반환하기 때문에 중간 연산을 연속하여 사용가능하다.
최종 연산은 스트림의 요소를 소모하면서 연산을 수행하므로 단 한 번만 연산이 가능하다
오늘 쓴 forEach는 최종 연산이다
특징 : 코드가 간결하다, 병렬처리가 쉽다, 결과 관리가 쉽다.

 

 

 

 

 

 

 

 

 

 

 

초반 작성한 코드

 

 

 

 

 

 

 

 

 

 

최종 작성한 코드

 

 

 

 

 

 

 

 

 

 

코드 결과

 

 

 

 

 

 

 

 

 

 

 

고민했던 부분들

그렇게 복잡한 코드는 아니지만 어떻게 좀 더 간결하고 불필요한 변수 삭제불필요한 연산을 하지 않도록 하는 부분도 점검이 필요했다.그리고 문제 제출 시 solution이라는 정한 메서드를 처리해서 출력해 주는 방식으로 제출해야 해서어떤 방식이 좋은지 고민을 했다.이것저것 바꿔보면서 검색도 많이 해보다가 오늘도 많이 배운 것 같다.

 

 

 

 

 

반응형