[JAVA]61.hashCode()

손영민's avatar
Mar 09, 2025
[JAVA]61.hashCode()

1.hash 개념

124211132 리더면서 붙이기(나누기, 더하기, 곱하기 등등)
이미지

해시의 주요 특징

  • 일방향성: 해시 값으로부터 원래 데이터를 복원할 수 없음
  • 고정 길이 출력: 입력 데이터의 크기와 상관없이 항상 같은 길이의 해시 값 생성
  • 결정적: 같은 입력에 대해 항상 같은 해시 값 출력
  • 빠른 연산: 효율적인 계산 가능

해시의 활용 분야

  1. 데이터 무결성 검증: 파일 다운로드 시 해시 값 비교로 변조 여부 확인
  1. 비밀번호 저장: 원본 비밀번호가 아닌 해시 값을 저장하여 보안 강화
  1. 데이터 구조: 해시 테이블을 이용한 빠른 검색 및 저장
  1. 블록체인: 트랜잭션 검증 및 블록 연결에 활용
 

hashCode() 메서드

Java에서 Object 클래스의 hashCode() 메서드는 객체의 메모리 주소를 기반으로 해시 코드를 생성합니다.
java Copy public class Example { public static void main(String[] args) { String str = "Hello"; System.out.println("Hash code: " + str.hashCode()); } }

2.hash 기초 알고리즘

1) 단순 해시 함수 예제
public class Ha01 { public static int simpleHash(String key, int tableSize) { int hash = 0; for (char c : key.toCharArray()) { hash += c; // 각 문자의 ASCII 값을 더함 } return hash % tableSize; // 테이블 크기로 나눈 나머지를 해시 값으로 사용 } public static void main(String[] args) { String key1 = "apple"; String key2 = "banana"; int tableSize = 10; // 해시 테이블 크기 System.out.println("apple의 해시 값: " + simpleHash(key1, tableSize)); System.out.println("banana의 해시 값: " + simpleHash(key2, tableSize)); } }
실행 결과:
  • "apple"의 해시 값: (97+112+112+108+101) % 10 = 530 % 10 = 0
  • "banana"의 해시 값: (98+97+110+97+110+97) % 10 = 609 % 10 = 9
 
Share article

sson17