19.04.12 API, java.lang / java.util 패키지, 해시코드
-API 도큐먼트-
쉽게 API를 찾아 이용할 수 있도록 문서화 한 것
-구성-
좌측 상단 : 패키지 전체 목록
좌측 하단 : 클래스와 인터페이스 목록
중앙 부분 : 좌측 하단에서 선택한 클래스나 인터페이스에 대한 상세 설명
└상단 : 클래스가 포함된 패키지 정보, 상속 정보, 인터페이스 구현 정보
└중앙 : 클래스의 설명과 사용방법을 간략하게 보여준다.
└하단 : 필드, 생성자, 메소드의 목록을 보여준다.
-java.lang 패키지-
자바 프로그램의 기본적인 클래스를 담고 있는 패키지
└종류 : Object, System, Class, String 등
-java.util 패키지-
컬렉션 클래스들이 대부분을 차지한다.
└종류 : Arrays, Calendar, Date, Objects, StringTokenizer, Random
-Object 클래스-
클래스 선언시 extends 키워드로 다른 클래스를 상속하지 않으면 상속하는 클래스.
따라서 java의 모든 클래스는 Object클래스의 자식이거나 자손 클래스이다.
-객체 해시코드(hashCode())-
객체를 식별할 하나의 정수값.
Object의 hashCode()메소드는 객체의 메모리 번지를 이용해서 해시코드를 만들어 리턴하기 때문에
객체마다 다른 값을 가지고 있다.
-해시코드 사용이유-
equals만 가지고는 HashMap, HashSet와 같이 Key,Value의 쌍으로 구성되는 자료구성에서 제대로 작동하지
않기 때문에 equals와 해시코드를 같이 사용해서 객체를 식별한다.
-객체의 동등 비교-
Object의 equals()메소드와 hashCode() 메소드를 같이 재정의해서 동등 객체일 경우 동일한 해시코드가
리턴되도록 해야한다.
-예제 및 출력 결과-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.hs.chap11; public class Key { public int number; public Key(int number) { this.number = number; } @Override //해시코드의 리턴값을 number의 필드값으로 했기 때문에 같은 해시코드가 리턴된다. public int hashCode() { return number; } @Override public boolean equals(Object obj) { if(obj instanceof Key) { Key compareKey = (Key) obj; if(this.number == compareKey.number) { return true; } } return false; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.hs.chap11; import java.util.HashMap; public class KeyExample { public static void main(String[] args) { //Key 객체를 식별키로 사용해서 String 값을 저장하는 HashMap 객체 생성 HashMap<Key,String> hashMap = new HashMap<Key, String>(); //식별키 "new Key(1)"로 "홍길동"을 저장함 hashMap.put(new Key(1),"홍길동"); //식별키 "new Key(1)"로 "홍길동"을 읽어옴 String value = hashMap.get(new Key(1)); System.out.println(value); } } | cs |