220518 TIL
항해99 중..
어제까지 git으로 TIL작성하다가 티스토리로 넘어옴.
잘 적어보자.
알고리즘 문제를 풀며 문제 접근에 대한 시각도 커지고, 코드작성하면서 형변환, 선언, 등 실력이 늘어간다.
주어진 28문제풀고도 더 푸는중.
HashSet -> ArrayList -> Array
HashSet<Integer> set = new HashSet<>(); //Set
ArrayList<Integer> list = new ArrayList<>(set); //Set -> ArrayList
Collections.sort(list); //정렬
int[] answer = new int[list.size()]; //배열 선언
for(int i = 0; i < list.size(); i++) { //ArrayList -> Array
answer[i] = list.get(i);
HashSet 은 내부적으로 HashMap의 테이블 인덱스를 따라서 정렬을 해주면 오름차순으로 나오게 된다.
String, StringBuilder, StringBuffer 차이
- String 을 불변, 변하지 않는 문자열에 쓰는게 좋다.
- 가변인 상황에서 메모리 해결하기위해 StringBuilder , StringBuffer 도입
- StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다는 점(thread-safe)
- 참고로 String도 불변성을 가지기때문에 마찬가지로 멀티쓰레드 환경에서의 안정성(thread-safe)을 가지고 있습니다.
- StringBuilder는 동기화를 지원하지 않기때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않지만
동기화를 고려하지 않는 만큼 단일쓰레드에서의 성능은 StringBuffer 보다 뛰어납니다.
고유값 생성
import java.util.UUID;
String uuid = UUID.randomUUID().toString();
uuid값을 String으로 변환한것
제네릭(Generic)
제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미
- Generic(제네릭)의 장점
1. 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다.
2. 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 즉, 관리하기가 편하다.
3. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.
사용 방법은 TIL에 적기엔 너무 방대하고 양이 많다.
참고자료 : https://st-lab.tistory.com/153
자바 [JAVA] - 제네릭(Generic)의 이해
정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고
st-lab.tistory.com
내일 할 거
- 알고리즘 테스트 있다.
- 과제 제출도 있다. (enum타입 공부해서 과제에 적용할 수 있는지 확인)
- Collection 프레임 워크 공부해보자. 굉장히 많이 쓸거 같은 기분이 듦...