반응형
- Iterator 정리2021-05-15 11:05:45오늘은 자바에서 컬렉션 프레임 워크에 저장된 요소를 읽어오는 방법 중 자주 쓰이는 Iterator 인터페이스에 대해 정리해 보겠습니다. 우선 Iterator 인터페이스 내부를 한 번 들여다 보겠습니다. hasNext next remove forEachRemaining 위 4개의 함수가 있네요. 설명을 보면 hasNext는 iteration에 다음 요소가 존재하는지의 여부를 boolean으로 반환하고 next는 해당 iterator에서 다음 요소를 반환합니다. remove는 iteration에서 반환된 마지막 요소를 내부 컬렉션에서 제고하는 역할을 합니다. next()호출마다 한번만 호출 가능하며, 반복이 진행되는 동안 이것 이외의 방법으로 컬렉션이 수정되면 동작이 지정되지 않는다고 설명하고 있습니다. f..
- Comparable와 Comparator 정리2021-04-14 00:30:14오늘은 Comparable과 Comparator의 차이와 그 사용법에 대해 정리해 보겠습니다 우선 java에서 제공되는 정렬이 가능한 클래스들은 모두 Comparable을 구현하고 내부적으로 compareTo()메서드를 재정의 해 구현 방식에 따라 정렬을 수행합니다. 이것들이 내부적으로 Comparable을 구현하고 있습니다. Integer 클래스를 예로 보면 이런식으로 구현하고 있죠? 이렇게 구현한 클래스를 사용하는 방법으로는 다음 두 가지가 있습니다. Arrays.sort() Collections.sort() 두 개의 차이는 Arrays.sort()에 경우 primitive array와 object array둘 다 동작할 수 있도록 내부적으로 구현이 되어 있고 Collections.sort()는 Li..
- Shallow Copy & Deep Copy2021-04-13 23:48:49얕은복사와 깊은복사에 대해 알아봅시다. 얕은 복사 한 쪽에서 수정이 발생되면 복사한 객체에도 영향을 준다. 얕은 복사가 참조값을 복사하기 때문에 복사한 객체도 같은 참조값을 가지므로 수정이 반영되는 것 깊은 복사 참조값을 복사하는 것이 아니라 , 원본 객체의 내부 객체의 값까지 복사해서 힙 영역에 객체를 새로 만드는 것으로 수정이 일어나도 원본과는 관계가 없다. 위의 클래스처럼 clone을 재정의한 클래스를 가지고 비교해보겠다. 실행 결과를 보면 clone을 통해 복사한 객체가 얕은 복사라는 것을 알 수 있다. 여기서 생각드는건 내가 객체를 복사할 때 대부분 원본에 복사본의 수정사항을 반영하고 싶을리가 없다는 거다. 그렇다면 clone을 주의해서 재정의해보자. 이처럼 객체 복사시에 의도적으로 얕은 복사를..
- Hash2021-04-10 20:11:43자바의 컬렉션에서 객체의 해시값을 사용하는 자료구조가 있다. 대표적으로 HashTable을 예로 오늘 설명하겠습니다~ 자,, 우선 해시? 해싱? Hash 해시란 임의의 데이터의 길이를 고정된 데이터의 길이로 변환하는 데이터 변환 기법중에 하나다. 이 변환 과정에서 사용하는 함수를 해시 함수라고 하고 변한하는 과정을 해싱이라고 한다. 그렇다면 왜 임의의 길이를 고정된 데이터의 길이로 변환할 필요가 있을까? 해시 함수의 키로 들어온 값으로 만든 해시 코드는 정수이기 때문에 배열 공간을 고정된 크기만큼 만들어둔 후(해시 버킷) 해시 코드를 배열의 크기로 나머지 연산 후 배열에 나누어 담을 수 있게 되면 이후 검색시 다이렉트로 검색이 가능하기 때문에 O(1)의 시간복잡도로 접근이 가능하다. 그런데 이 경우 객체..
반응형