[CodeStatesLog] Collection in Java

hk·2022년 5월 17일
0

CodeStatesLog

목록 보기
3/15

[Week04,Day16][TUE 17 MAY 2022] Java Collection

페어할 때는 예습한 거 다 지우고 빈칸에서 시작했다.

굿모닝세션 때 크루님이 굳이 예습할 필요없다고 하셨는데
저는.. 저는 주말에 문제도 못 읽어본 3문제
페어프로그래밍 바로 하니까 내비도 드라이브도 힘들던데요😭😭😭
페어님께 폐를 끼치지 않기 + 내가 잘 이해하기 위해서라도
당분간 나는 주말이나 아침을 이용해 예습을 꼭 해야겠다는 생각..흑흑
그리고 크루님 고양이 귀여워😻😻

여튼.. 몇가지 배운 점들 기록✨


1. >= 가 맞다 => 아님 (부등호 먼저 쓰기) 그리고 반복문을 쓰는 습관 들이기

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 에서 <=이지 =<가 아니다..... 맨날 헷갈림
부등호가 먼저다 부등호가 먼저다
원래 겹쳐서 하나의 부호를 쓸 때도 부등호를 먼저 쓰잖아
부등호가 먼저다 알겠니


2. if문에 else 안 써도 되는 것

예를 들어 두번째 문제 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 리턴한다는 부분이 빠져있어서
좀 있다 말씀드려야할 것 같다


3. return에 바로 출력하기

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에 뭐는 바로 넣어도 되고
어떤 건 왜 바로 넣음 오류나는지 잘 모르겠다.
찾아봐야지


4. 깊은 복사

나는 깊은 복사를 하기 위해

ArrayList<Integer> output = new ArrayList<Integer>();
      for (Integer i : arrayList) {
        output.addAll(arrayList);    
      }

이렇게 어디서 for문을 구글링해와서 돌렸는데
페어님이 아래와 같이 간단한 깊은 복사 방법을 가르쳐주셨다

ArrayList<Integer> output = new ArrayList<Integer>(arrayList);

이렇게 생성자 안에 카피대상이 되는 arrayList를 넣으면 깊은복사 됨


5. Array를 list로 바꿀 때 주의할 점

Arrays.asList를 사용하여 배열을 리스트로 바꿀 때

// List<String> output = Arrays.asList(arr);

위의 방법으로 asList를 사용하면
리스트에 추가, 삭제가 안 된다고 한다.
아래와 같이 바꾸어야한대

List<String> list = new ArrayList<>(Arrays.asList(arr));

여기까지 쓰다보니 슬슬 자괴감이 몰려오는데... 😭😭😭

자바 공부 열심히 하자


6. isEmpty의 사용

지금까지 빈 배열을 받으면 null을 리턴해라 같은 걸
if (ArrayList.size()==0){}
으로 썼는데
페어님은
if (ArrayList.isEmpty()){}
를 쓰셨다.

isEmpty가 더 멋있어보이니까 앞으론 이걸 쓸게요 😏


7. 깔끔한 코드 쓰는 법✨

페어님은 나처럼 배열길이 같은 걸 변수로 선언하지 않아서
페어님의 코드가 훨씬 짧다는 걸 배웟다

내 코드 진짜 길어..ㅠ

페어님한테 질문을 했다 ..
자바를 배우셨는지... 아니래 파이썬 배우셨대
파이썬은 나도 배웠는데.. 😥

예전에 나 파이썬 freeCodeCamp 예제 풀다가
내 코드가 너무 길어서 언니에게 물어봤을 때
언니가 코드가 너무 길다고 경악했던 거 생각나ㅋㅋㅋ
거의 언니 두세배 길이였는데....

쪽팔리지만...
페어님께 어떻게 하면 간결하고 예쁜 코드를 쓸 수 있냐고 물었다
페어님은 백준에서 코딩 문제 풀이를 많이 하셨고
그때 다른 사람들이 풀이한 코드를 많이 보셨다고 한다
좋은 코드 많이 보다보면 는다고..

그러고보니 나는 코플릿 풀고 나서 레퍼런스도 잘 안 봐!!! <<<

앞으로는 나도 잘하는 다른 사람들의 코드를 열심히 보면서
💖예쁘고 깔끔하고 짧은 코드💖를 흉내내 보아야겠다 😄


이 글 보시진 않겠지만 페어님 감사해요~~~


8. int와 Integer의 차이

줌 라이브 세션 들으면서 메모

페어님께도 했던 질문인데
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;

이런 식으로 하면 안 된대
의도하지 않은 형 변환을 조심하기


.equals()

22번 문제에서 아래처럼 풀었는데
스트링 타입을 이렇게 해주면 안 된다는데
이유 설명해주시는 부분을 놓쳤어 ㅠㅠ 찾아보자

return member.get(username) == password ;

.equals()를 써야한다고 함

return member.get(username).equals(password)
profile
cloud master가 될 거야! (not 석사)

0개의 댓글