[Week04,Day16][TUE 17 MAY 2022] Java Collection
페어할 때는 예습한 거 다 지우고 빈칸에서 시작했다.
굿모닝세션 때 크루님이 굳이 예습할 필요없다고 하셨는데
저는.. 저는 주말에 문제도 못 읽어본 3문제
페어프로그래밍 바로 하니까 내비도 드라이브도 힘들던데요😭😭😭
페어님께 폐를 끼치지 않기 + 내가 잘 이해하기 위해서라도
당분간 나는 주말이나 아침을 이용해 예습을 꼭 해야겠다는 생각..흑흑
그리고 크루님 고양이 귀여워😻😻
여튼.. 몇가지 배운 점들 기록✨
1번 문제 01_makeArrayList 반복문 쓰기 페어님과 같이 해결
나는 반복문 쓰려다가 그냥 쭉 다 넣었는데
페어님도 나처럼 그냥 다 입력하셨다구..
output.add(0,1);
output.add(1,2);
output.add(2,3);
output.add(3,4);
output.add(4,5);
이게 5까지라 망정이지 100이면 어떡할거야
반복문 싫지만 자꾸 삽질하지말고 반복문에 익숙해져야 할 것 같아
그래서 페어님께 반복문을 써보자고 말씀드려서
for (int i=1; i<=5; i++){
output.add(i);
}
반복문 완성💖
그리고 혼자 다시 해보면서 헷갈렸던 것
i <= 5 에서 <=이지 =<가 아니다..... 맨날 헷갈림
부등호가 먼저다 부등호가 먼저다
원래 겹쳐서 하나의 부호를 쓸 때도 부등호를 먼저 쓰잖아
부등호가 먼저다 알겠니
예를 들어 두번째 문제 02_getNthElement (코플릿에 제목 오류있음)
if (num == 0 || index > num ){
return null;
}
else {
return arrayList.get(index);
}
나는 이렇게 썼던 것을
페어님은 아래와 같이
if( arrayList.size()==0){
return null;
}
return arrayList.get(index);
이렇게 만들어주셨다.
else를 굳이 쓰지 않아도 된다는 걸 생각도 못 했네..
근데 지금 블로깅하다가 발견한건데 페어님이랑 풀었던 코드에는
index가 num보다 클 때 null 리턴한다는 부분이 빠져있어서
좀 있다 말씀드려야할 것 같다
03_getLastElement 에서 아래와 같이 풀었다.
int num = arrayList.size();
(중간생략)
String output = arrayList.get(num-1);
return output;
페어님이 아래처럼
if( arrayList.size()==0){
(중간생략)
return arrayList.get(arrayList.size()-1);
그런데 아직도...
return에 뭐는 바로 넣어도 되고
어떤 건 왜 바로 넣음 오류나는지 잘 모르겠다.
찾아봐야지
나는 깊은 복사를 하기 위해
ArrayList<Integer> output = new ArrayList<Integer>();
for (Integer i : arrayList) {
output.addAll(arrayList);
}
이렇게 어디서 for문을 구글링해와서 돌렸는데
페어님이 아래와 같이 간단한 깊은 복사 방법을 가르쳐주셨다
ArrayList<Integer> output = new ArrayList<Integer>(arrayList);
이렇게 생성자 안에 카피대상이 되는 arrayList를 넣으면 깊은복사 됨
Arrays.asList를 사용하여 배열을 리스트로 바꿀 때
// List<String> output = Arrays.asList(arr);
위의 방법으로 asList를 사용하면
리스트에 추가, 삭제가 안 된다고 한다.
아래와 같이 바꾸어야한대
List<String> list = new ArrayList<>(Arrays.asList(arr));
여기까지 쓰다보니 슬슬 자괴감이 몰려오는데... 😭😭😭
자바 공부 열심히 하자
지금까지 빈 배열을 받으면 null을 리턴해라 같은 걸
if (ArrayList.size()==0){}
으로 썼는데
페어님은
if (ArrayList.isEmpty()){}
를 쓰셨다.
isEmpty가 더 멋있어보이니까 앞으론 이걸 쓸게요 😏
페어님은 나처럼 배열길이 같은 걸 변수로 선언하지 않아서
페어님의 코드가 훨씬 짧다는 걸 배웟다
내 코드 진짜 길어..ㅠ
페어님한테 질문을 했다 ..
자바를 배우셨는지... 아니래 파이썬 배우셨대
파이썬은 나도 배웠는데.. 😥
예전에 나 파이썬 freeCodeCamp 예제 풀다가
내 코드가 너무 길어서 언니에게 물어봤을 때
언니가 코드가 너무 길다고 경악했던 거 생각나ㅋㅋㅋ
거의 언니 두세배 길이였는데....
쪽팔리지만...
페어님께 어떻게 하면 간결하고 예쁜 코드를 쓸 수 있냐고 물었다
페어님은 백준에서 코딩 문제 풀이를 많이 하셨고
그때 다른 사람들이 풀이한 코드를 많이 보셨다고 한다
좋은 코드 많이 보다보면 는다고..
그러고보니 나는 코플릿 풀고 나서 레퍼런스도 잘 안 봐!!! <<<
앞으로는 나도 잘하는 다른 사람들의 코드를 열심히 보면서
💖예쁘고 깔끔하고 짧은 코드💖를 흉내내 보아야겠다 😄
이 글 보시진 않겠지만 페어님 감사해요~~~
줌 라이브 세션 들으면서 메모
페어님께도 했던 질문인데
int와 Integer는 어떻게 다른가
Integer는 wrapper 클래스고 null값 같은 것도 포함할 수 있대
아래 블로그 참고하기
https://growinglastcanyon.tistory.com/6
그리고
07_removeFromFront 문제에서
if (arrayList.size()==0){
return null;
}
return arrayList.remove(0);
이걸 아래처럼
int result;
result = arrayList.remove(0);
return result;
이런 식으로 하면 안 된대
의도하지 않은 형 변환을 조심하기
22번 문제에서 아래처럼 풀었는데
스트링 타입을 이렇게 해주면 안 된다는데
이유 설명해주시는 부분을 놓쳤어 ㅠㅠ 찾아보자
return member.get(username) == password ;
.equals()를 써야한다고 함
return member.get(username).equals(password)