안녕하세요. chogahui05입니다. ps를 하시다 보면, 테스트 케이스 문제를 많이 보셨을 겁니다. 보통, vector를 클리어 할 때, clear 메소드를 많이 이용하고요. 여기서 한 가지 질문. clear 메소드는 정말 vector가 할당했던 모든 것을 깔끔하게 clear 할까요? 답은 그렇다는 보장이 없다입니다. 링크에서, reallocation is not granteed 라는 문구를 보시면 알 수 있습니다. 다음 코드를 보도록 하겠습니다. v에 5개의 원소를 넣습니다. 그리고 size와 capacity를 출력합니다. 다음에 vector의 clear 메서드를 호출한 다음에 다시, size와 용량을 출력해 주는 capacity를 출력합니다. 결과 값을 보면, 1번째 줄에는 5와 8이, 2번째 줄..
레퍼런스/분석 검색 결과
이번 시간에는 Objects 클래스에 있는 deepequals 메서드가 어떻게 동작하는지 알아보도록 하겠습니다. 사실, 카톡에서 누군가 질문을 올려주셔서 뜯어보게 되었습니다. 먼저, Objects의 deepEquals를 보면, a와 b를 받습니다. 80번째 줄을 보면, a와 b가 같으면 true를 리턴합니다. 가리키는 객체가 같다면 true를 리턴합니다. 그리고, a가 null이거나 b가 null이면 false를 리턴합니다. 그렇지 않으면, Arrays.deepEquals0을 호출합니다. 그러면 이 함수를 보도록 하겠습니다. 뭔가 너무 길어 보입니다. 조건 구문만 대략 10개가 넘는 듯 싶어요. 이 중 8개는 기본 타임의 배열인 경우에 처리를 하는 루틴입니다. 예를 들어, instance of char[..
예전에 vector가 인자로 들어왔을 때, 어떻게 해야 되는지를 올렸습니다. 어느 분이 댓글로 피드백을 주셨습니다. 그 내용에 관해서 보강 설명을 하도록 하겠습니다. 사실 동적 배열에서 중요한 것은 딱 3개입니다. capacity, size. 그리고 grow rate. ps를 하시다 보면, vector의 reserve와 resize 함수를 써야 하는 경우가 있습니다. 어떤 경우인지는 밑에서 설명해 드리도록 하겠습니다. 동적 배열의 기본 동작 먼저 설명해 드리겠습니다. 먼저, 4개의 원소를 저장할 수 있는 공간에 3개의 원소가 있다고 해 봅시다. 이 경우에, capacity는 4이고, size는 3입니다. 이걸 그림으로 나타내면 아래와 같습니다. 여기서, push_back(3)이 호출되면 어떤가요? 이 때..
생활코딩에 arrays.Copyof 메서드에 대한 질문이 올라왔었습니다. 그런 의미에서 이 함수를 간단하게 보도록 하겠습니다. 먼저, 메서드 이름에서 보면 알 수 있다시피, 배열을 복사하는 함수입니다. 배열의 내용을 다른 array로 복사합니다. 여기까지만 짚고, copyOf의 내용을 간략하게 보도록 하겠습니다. 먼저 primitive 타입이 아닌 배열을 copyOf를 할 때에는 3180번째 줄에 있는 친구가 호출이 됩니다. 그러면, 3181번째의 리턴문이 수행이 될 듯 싶네요. 따라 들어가 보겠습니다. 그러면 위 메소드가 수행이 되는데요. 3항 연산자, arraycopy, 리턴문. 이렇게 3개의 문장으로 구성이 되어 있습니다. 이게 어떻게 수행이 되는지 정확히 모르겠으니, main 클래스를 작성해서 디..
저번에, 왜 equals를 구현하면 왜 hashCode를 같이 구현해야 하는지에 대해서 설명을 했습니다. hash 계열의 자료구조 때문에 그렇다고 했었습니다. 그렇지 않으면 어떻게 동작하는지는 여기를 참고하시면 좋겠습니다. 이 내용에 대해서 숙지하셨다고 가정하고 진행하도록 하겠습니다. 면접 질문에서 간혹 가다가 등장하는지는 잘 모르겠습니다만, 어떠한 객체의 hashCode 값이 같은 것들을 모두 hashSet에 넣을 때, 어떤 일이 벌어지는지는 꽤 중요한 문제 중 하나일 겁니다. 사실, 우리는 그렇게 바보같이 구현할 일이 없습니다. 그렇지만, 저는 이에 대해서 포스팅 하도록 하겠습니다. 먼저 Java 8에서부터, hashMap은 버킷에 8개 이상 달려있을 때, Balanced Tree로 변환이 된다는 것..
최근댓글