Free Lines Arrow
본문 바로가기
728x90

Language/Java31

[Java] HashMap, hashCode(), equals() HashMap HashMap 이 어떻게 동작하고 저장하는지 알아본다. HashMap 에서 어떻게 비교연산이 이루어 지는지 알아본다. equals 와 hashCode 함수에 대해 알아본다 HashMap? HashMap 이란 키와 값을 묶어서 하나의 데이터로 저장한다. 그리고 hashing 을 사용하기 때문에 데이터를 검색하는데 성능이 뛰어나다. hashing 이란 뭘까? Hashing 해싱이란 해시함수를 이용해서 데이터를 해시 테이블에 저장하고 검색하는 기법이다. 그림 1. 키값을 해시함수에 넣는다. 2. 해시함수 결과 값(해시코드)에 해당하는 링크드리스트를 찾는다. 3. 링크드 리스트에 검색한 키와 일치하는 데이터를 저장하거나 또는 데이터를 찾는다. hashCode? Map 을 사용할때 때때로 hashC.. 2021. 9. 6.
[Java] getter 와 setter getter 와 setter 개발을 하다보면 많이 들어 봤을 얘기다. 그리고 사용하는게 당연하다고 알고 있다. getter 와 setter 그럼 왜써야될까? 막상 설명 하려고 하면 까먹는 경우가 있다. 내가 그랬다. private 접근자 우리는 보통 멤버변수를 private 으로 해둔다 그이유는 무결성 때문이다. 그리고 한정적으로 노출 하여 유지보수 성을 높일수 있다 DDD 를 생각해보면 항상 최상위 루트에서 접근을 해야 되기 때문에 겟터와 셋터로만 접근 하게 하면 경계가 생겨서 유지보수에 좋다 그렇다면 무결성이 왜 필요한가? 다음과 같은 얘가 있다. 우리는 멤버변수 가격을 갖는 Item 클래스를 만들었다. 초보개발자 같은 경우는 setter 를 굳이 만들기 귀찮아서 그냥 public 으로 했다 얼마나 .. 2021. 9. 5.
[Java] Null 안전하게 다루기 Null 이란? 미확인 값 또는 값이 할당 되지 않는 상태를 표현한다. int 형은 0 을 기본 값으로 가진다. 하지만 참조타입은 기본값으로 null 을 갖는다. Null은 왜 문제가 될까? Null의 아버지 토니 호어가 이를 두고 'The Billion Dollar Mistake(10억 달러짜리 실수)'라고 할 정도다 널 참조를 허용했는데 이 때문에 수십 년 동안 일어난 문제가 'billion dollar' 수준으로 손해가 될 만큼 엄청나다는 것을 표현했다. 기본으로 null 을 쓰지말자 함수를 사용하는 쪽에서 null 값이 왔는지 제대로 체크하지 않고 값을 쓰면 오류가 터진다. 프로그래머가 아닌 사용자도 잘 쓰던 프로그램이 갑자기 오류를 토해내면서 다운되는 바람에 작업을 날려먹는 일이 있을 텐데 오류.. 2021. 8. 24.
[Java] 직렬화, 역직렬화 Serialization 직렬화란 객체를 데이터 스트림으로 만드는 것을 말한다. 역직렬화란 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 말한다. 객체를 바이트로 만들어 저장 하고 바이트로된 데이터를 읽어서 객체로 만든다. 왜 필요할까? 객체를 따로 저장했다가 읽을때 사용한다. 네트웍을 통해 컴퓨터 간에 서로 객체를 주고 받을때 사용한다. serialVersionUID serialVersionUID 를 쓰는경우를 많이 봐왔다. 선언하지 않으면 자동으로 생성된다. 사용이유 역직렬화 를 할때 serialVersionUID 가 일치하는지 검사를 하기 때문이다. 클래스가 변경 되었을때 버전 정보를 보고 맞추기 때문이다. static final long serialVersionUID = 2L; 객체 직렬화 구.. 2021. 8. 23.
728x90
반응형