# Java와 자료구조

[원문](https://www.linkymeadow.com/w/b7d14e/)

마지막 수정: 2026-10-05 21:40 (KST)

Java 언어의 값·객체·타입 규칙과 컬렉션의 동작을 살펴보고, 자료구조의 구현과 비용 분석으로 이어지는 자료입니다. 이전 Java 튜토리얼은 기본 개념을 읽는 데 활용하고 API·도구 사용은 프로젝트 버전과 맞춰 확인할 수 있습니다.

## 객체와 값의 의미

- [Object — Java API](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html)

  equals·hashCode의 계약과 clone·getClass의 동작을 확인할 수 있습니다.
- [String — Java API](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/String.html)

  문자열의 불변성, 비교와 valueOf 변환을 통해 타입 캐스팅과 문자열 표현의 차이를 살펴볼 수 있습니다.
- [Passing Information to a Method or a Constructor — Oracle Java Tutorials](https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html)

  기본형 값과 객체 참조 값이 메서드 인자로 전달될 때의 동작을 예제로 설명합니다.
- [Secure Coding Guidelines for Java SE — Oracle](https://www.oracle.com/java/technologies/javase/seccodeguide.html)

  가변 객체의 공유를 제한하는 방어적 복사와 입력·반환값의 객체 상태 보호를 다룹니다.
- [Using Records to Model Immutable Data — Dev.java](https://dev.java/learn/language/oop/records/)

  Record의 구성 요소·생성자·자동 생성 메서드를 설명하며 가변 객체를 구성 요소로 사용할 때도 살펴볼 수 있습니다.

## 예외와 타입

- [Exceptions — Dev.java](https://dev.java/learn/language/annotations-exceptions/exceptions/)

  예외 포착·전파, 예외 종류와 try-with-resources를 이용한 자원 관리를 다룹니다.
- [Generics — Dev.java](https://dev.java/learn/language/fp/generics/)

  타입 매개변수·상속·와일드카드와 타입 소거를 통해 제네릭의 타입 제약을 설명합니다.
- [Generics, Lambda, and Pattern Matching — Dev.java](https://dev.java/learn/language/fp/)

  람다와 함수형 인터페이스, 제네릭 및 패턴 매칭 학습 자료로 연결합니다.
- [Working with Records through Reflection — Dev.java](https://dev.java/learn/reflection/records/)

  리플렉션으로 Record 여부와 구성 요소를 확인하는 예제를 제공합니다.

## 컬렉션과 알고리즘

- [The Collections Framework — Dev.java](https://dev.java/learn/api/collections-and-streams/collections-framework/)

  List·Set·Queue·Map과 구현 선택, 컬렉션 순회·정렬·비교를 다룹니다.
- [ArrayList — Java API](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html)

  초기 용량·ensureCapacity·배열 확장과 주요 연산 비용을 설명합니다.
- [Algorithms, 4th Edition — Sedgewick·Wayne](https://algs4.cs.princeton.edu/home/)

  스택·큐·연결 리스트·탐색 트리·해시 테이블·트라이와 시간·공간 비용을 Java 구현으로 공부할 수 있습니다.
- [Algorithms Lecture Slides — Sedgewick·Wayne](https://algs4.cs.princeton.edu/lectures/)

  알고리즘 분석과 자료구조의 동작을 도식·예제·시연으로 살펴볼 수 있습니다.
- [Encapsulated Collection — Martin Fowler](https://martinfowler.com/bliki/EncapsulatedCollection.html)

  컬렉션의 변경 연산을 객체가 관리하도록 설계하는 이유를 설명해 일급 컬렉션의 설계 취지와 함께 읽을 수 있습니다.

## 컴파일과 실행

- [The Core JDK Tools — Dev.java](https://dev.java/learn/jvm/core-tools/)

  javac·java·javap 등 컴파일·실행·바이트코드 분석 도구의 공식 학습 자료로 연결합니다.

## 관련 문서

- [프로그래밍 언어·런타임](https://www.linkymeadow.com/w/60ce93/)
- [운영체제와 동시성](https://www.linkymeadow.com/w/75b19c/)
- [소프트웨어 설계와 아키텍처](https://www.linkymeadow.com/w/a6c95f/)
- [소프트웨어 테스트](https://www.linkymeadow.com/w/ac7642/)
- [백엔드 개발 학습 자료](https://www.linkymeadow.com/w/e48b27/)
