티스토리 뷰
Done
- 알고릐즘 2문제
- 자바의 정석 배열 https://bong-f.tistory.com/106
Learned
알고리즘
버벅거렸던 부분
배열의 특정 요소 삭제 후 > 바로 그 옆의 요소 삭제 할 때, 앞에서 이미 삭제 했으면 index를 같은 값을 써줘야 다음 값이 지워지는데, index+1을 하고 삭제 해서 버벅거렸다.
max를 쓸 줄 몰라 버벅 거렸다
자바의 정석 && 배열
- 배열은 같은 타입이 여러 변수를 하나의 묶음(연속적인)으로 다루는 것
- 배열 생성시 여러 저장공간이 생기고 그것을 하나로 묶어주는 참조변수가 변수에 저장된다
- 배열의 길이는 "상수"다. 한번 생성시 바꿔주질 못한다.
- 배열의 크기를 바꾸려면 값들을 복사해서 새로운 배열을 ㅁ낟르어 줘야 한다
- print(배열이름)하면 메모리주소가 반환되지만 char[]의 경우는 print()에 그대로 넣어도 바로 출력된다.
- String배열은 기본값이 null이다
- String배열은 각각의 String은 하나의 클래스이므로 각각 생성되고 그 값의 주소들이 배열에 저장되고 또 그것을 묶어주는 것이 참조변수에 저장된다
- String은 클래스이기 때문에 새로운 문자열을 출력할 때마다 new String 해줘야 하지만 단순 " " 만 쓰는 것도 특별 허용한다.
- cha와 String은 그 값을 변경할 수 없다. 새로운 문자열을 생성해서 원래 있던 변수에 새로운 주소를 넣어주는 것일뿐. 연결고리를 잃은 String은 gc가 처리한다.
- 변경가능한 String을 만드려면 StringBuffer를 사용한다.
- cha배열을 안쓰고 Sring이라는 클래스를 사용하는 이유는 여러 메소드를 활용하기 위해서이다.
- String 클래스의 주요 메서드 : charAt, sustrin(int from, int to(미포함)), equals, toCharArray() 문자열 배열로 변환해서 반환
- 커맨드라인 입력받기 (내용 외워봐)
- Arrays로 배열 다루기
: Araays.toStirng(배열이름)
: Arrays.deepToString(배열이름)
: Arrays.equals(배열, 배열)
: Arrays.deepEquals(배열, 배열)
: Arrays.copyOf(배열, 복사할 요소의 갯수)
: Arrays.copyOf(배열, 시작, 끝(미포함)) (끝 생략시 맨 마지막 요소까지
: copyOf 했을 때 끝의 수가 배열의 길이보다 크면 0으로 채워진다
: Arrays.sort(배열)
기타 개념
다른 분의 코드를 보고 collect 다음에 HashSet 만들고 거기에 add를 해주는 부분을 새로 알게 되었다.
public static Function<Integer, Set<Integer>> factors = .... 생략 .collect(HashSet::new, (set, x3)->{set.add(x3); set.add(n/x3);}, HashSet::addAll)
- 이렇게 HasSet::Add 부분에 set과 요소 하나를 인자를 넣고 -> 그 set에 add를 해주는 구나!
https://www.journaldev.com/32457/java-stream-collect-method-examples
https://codechacha.com/ko/java8-stream-collect/ 이런 방법이!
- 이렇게 HasSet::Add 부분에 set과 요소 하나를 인자를 넣고 -> 그 set에 add를 해주는 구나!
map과 reduce filter가 뭔지 이해하기
: map은 야채가게에서 과일을 슬라이스 상태로 바꿔 하나하나씩
: filter는 그 중에서 내가 좋아하는 것을 골라내고
: reduce는 그 것들을 합쳐서 야채 스푸 만들거나 새로운 뭘 만들어자바에는 엄밀히 따지면 클로저가 없다
: 외부변수에 접근하고 그걸을 바꿀 수 있어야 하는데 자바는 하지 못해
: 자바는 pass by value (not pass by reference) http://wonwoo.ml/index.php/post/1679 https://nathanh.tistory.com/119( pass가 아니라 call 이라고 써 있는데 상관 없는 것인가? )+ 0221 추가. 아주 엄밀히 따지면 상관있다. (거의 같은 의미) pass by value 최근까지 이해한 것 https://bong-f.tistory.com/198
: 따라서 외부변수를 변경하지 못한다. 엄밀히 말하면 유사 클로저라고 하면 되는데
: 우리 수준에서는 유사 클로저가 있다 라는 정도라면 알면 된다.outer에 있는 것을 inner 클래스가 참조하면서 outer 클래스가 메모리에서 내려와도 inner 클래스에서 그 값을 참조하기 때문에 그 값의 변경이 가능한 것이 클로저인데,
: 자바는 사실 변경 불가능
: 람다를 통해서만 가능 (람다는 클로저를 포함하는 개념? todo)- 람다 타입 지정 위해 함수형 인터페이스 필요
: <참고> https://www.geeksforgeeks.org/method-within-method-in-java/
- 람다 타입 지정 위해 함수형 인터페이스 필요
클로저 vs 람다
: https://stackoverflow.com/questions/220658/what-is-the-difference-between-a-closure-and-a-lambda/220728#220728
:https://futurecreator.github.io/2018/08/09/java-lambda-and-closure/
Bad
- 병원을 다녀와서 약가 놀고싶어졌다
Good
- 운동을 했다
Feeling
- 누가 물어보면 대답할수 있을 정도로 정리를 해야 겠다. 문장으로라도 말할 수 있는 정도로
- 조원들과 토론하다가 자바에서 데이터의 흐름대로 클래스를 짜야한다는 말을 들었다. 더 생각해 봐야겠다. (#TODO)
TODO
- 키워드 STACK
https://opentutorials.org/module/4378/26781 - 키워드 객체지향 5대개념
https://www.nextree.co.kr/p6960/
'기타 > TIL' 카테고리의 다른 글
210122 금 TIL (0) | 2021.01.23 |
---|---|
210121 목 TIL (0) | 2021.01.21 |
210119 화 TIL (0) | 2021.01.19 |
210118 월 TIL (0) | 2021.01.18 |
210116-07 토일 TIL (0) | 2021.01.16 |
- Total
- Today
- Yesterday
- SQL코딩테스트
- array
- Queue
- 최단경로
- 프로그래머스lev1
- JdbcTemplate
- 그래프이론
- Sort
- 순열조합
- 우선순위큐
- 예외
- Stream
- 백준
- 동빈북
- 프로그래멋lev2
- FLASK
- 프로그래머스lev3
- Gitignore
- arraylist
- Stack
- 프로그래머스lev2
- spring-boot-qna
- 힙
- thread
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |