반응형

공부/Java 74

자바 컬렉션프레임워크-순회, 정렬, 전체 정리

순회1 - 직접 구현하는 Iterable, Iterator순회라는 단어는 여러 곳을 돌아다닌다는 뜻이다.자료 구조에 순회는 자료 구조에 들어있는 데이터를 차례대로 접근해서 처리하는 것을 순회라 한다.그런데 다양한 자료 구조가 있고, 각각의 자료 구조마다 데이터를 접근하는 방법이 모두 다르다. 예를 들어 배열 리스트는 index를 size까지 차례로 증가하면서 순회해야 하고, 연결 리스트는 node.next를 사용해서 node의 끝이 null일떄까지 순회해야 한다. 이렇듯 각 자료 구조의 순회 방법이 서로 다르다. 배열리스트, 연결 리스트, 해시 셋, 연결 해시 셋, 트리 셋 등 다양한 자료 구조가 있다. 각각의 자료 구조마다 순회하는 방법이 서로 다르기 때문에, 각 자료 구조의 순회 방법을 배워야 한다...

공부/Java 2024.10.09

자바 컬렉션 프레임워크 - Map, Stack, Queue

컬렉션 프레임워크 - Map 소개1Map은 키-값 쌍을 저장하는 자료구조이다.- 키는 맵 내에서 유일해야 한다. 그리고 키를 통해 값을 빠르게 검색할 수 있다.- 키는 중복될 수 없지만, 값은 중복될 수 있다.- Map은 순서를 유지하지 않는다.  자바는 HashMap, TreeMap, LinkedHashMap 등 다양한 Map 구현체를 제공한다. 이들은 Map 인터페이스의 메서드를 구현하며, 각기 다른 특성과 성능 특징을 가지고 있다. Map인터페이스의 주요 메서드는 다음과 같다.  이중에 HashMap을 가장 많이 사용한다.코드와 결과를 보며 확인해보자.public class MapMain1 { public static void main(String[] args) { Map stud..

공부/Java 2024.10.03

자바 컬렉션 프레임워크 - Set

Set의 이론은 이전 포스팅을 참고하도록 하자.https://surrealcode.tistory.com/80 컬렉션 프레임워크 - HashSet직접 구현하는 Set - MyHashSetV1https://surrealcode.tistory.com/79 자바 컬렉션 프레임워크 - 해시(Hash)컬렉션 프레임워크 - Set1 리스트(List) vs 세트(Set)자료구조에서의 List와 Set은 각각 특정한 방식으로 데surrealcode.tistory.com 자바가 제공하는 Set1 - HashSet, LinkedHashSetset : 중복을 허용하지 않고, 순서를 보장하지 않는 구조이다.Collection 인터페이스Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스..

공부/Java 2024.10.01

컬렉션 프레임워크 - HashSet

직접 구현하는 Set - MyHashSetV1https://surrealcode.tistory.com/79 자바 컬렉션 프레임워크 - 해시(Hash)컬렉션 프레임워크 - Set1 리스트(List) vs 세트(Set)자료구조에서의 List와 Set은 각각 특정한 방식으로 데이터를 저장하고 관리하는 데 사용된다.List(리스트)정의 : 리스트는 요소들의 순차적인 컬렉surrealcode.tistory.com이전에 봤던 해시 알고리즘을 사용해서 Set 자료구조를 다시 구현해본다.그 전에 Set의 정의를 다시 한번 복습해보자 Set : 중복을 허용하지 않고, 순서를 보장하지 않는 자료구조이다. 이전에 구현한 MyHashSetV0은add()로 데이터를 추가할 때 셋에 중복데이터가 있는지 전체 데이터를 항상 확인해..

공부/Java 2024.09.30

자바 컬렉션 프레임워크 - 해시(Hash)

컬렉션 프레임워크 - Set1 리스트(List) vs 세트(Set)자료구조에서의 List와 Set은 각각 특정한 방식으로 데이터를 저장하고 관리하는 데 사용된다.List(리스트)정의 : 리스트는 요소들의 순차적인 컬렉션이다. 요소들은 특정 순서를 가지며, 같은 요소가 여러 번 나타날 수 있다.특징- 순서 유지 : 리스트에 추가된 요소는 특정한 순서를 유지한다. 이 순서는 요소가 추가된 순서를 반영할 수 있다.- 중복 허용 : 리스트는 동일한 값이나 객체의 중복을 허용한다. 예를 들어, 같은 숫자나 문자열 리스트 안에 여러 번 저장할 수 있다.- 인덱스 접근 : 리스트의 각 요소는 인덱스를 통해 접근할 수 있다.용도 : 순서가 중요하거나 중복된 요소를 허용해야 하는 경우에 사용된다. Set(세트, 셋)정의..

공부/Java 2024.09.28

자바 컬렉션 프레임워크 List

자바의 다형성과 OCP 원칙을 가장 잘 활용할 수 있는 곳 중 하나가 바로 자료 구조이다.자료 구조에 다형성과 OCP 원칙이 어떻게 적용되는지 알아보자. List자료 구조순서가 있고, 중복을 허용하는 자료 구조를 리스트(List)라고 한다.우리가 지금까지 만든 MyArrayList와 MyLinkedList는 내부 구현만 다를 뿐 같은 기능을 제공하는 리스트이다. 물론 내부 구현이 다르기 때문에 상황에 따라 성능은 달라질 수 있다. 핵심은 사용자 입장에서 보면 같은 기능을 제공한다는 것이다.이 둘의 공통 기능을 인터페이스로 뽑아서 추상화하면 다형성을 활용한 다양한 이득을 얻을 수 있다.같은 기능을 제공하는 메서드를 MyList 인터페이스로 뽑아보자.public interface MyList { int..

공부/Java 2024.09.27

자바 컬렉션 프레임워크 - LinkedList

노드와 연결1배열 리스트의 단점 : 배열 리스트는 내부에 배열을 사용해서 데이터를 보관하고 관리한다. 이로 인해 다음과 같은 단점을 가진다1. 배열의 사용하지 않는 공간 낭비-배열은 필요한 배열의 크기를 미리 확보해야 한다. 데이터가 얼마나 추가될지 예측할 수 없는 경우 나머지 공간은 사용되지 않고 낭비된다. 2. 배열의 중간 데이터 추가- 앞이나 중간에 데이터를 추가하거나 삭제하는 경우 많은 데이터를 이동해야 하기 때문에 성능이 좋지 않다.  노드와 연결노드와 연결 구조를 사용하면 이 문제를 해결할 수 있다.낭비되는 메모리 없이 딱 필요한 만큼만 메모리를 확보해서 사용하고, 또 앞이나 중간에 데이터를 추가하거나 삭제할 때도 효율적인 자료구조이다. 노드를 만들고 각 노드를 서로 연결하는 방식이다. pub..

공부/Java 2024.09.26

자바 컬렉션 프레임워크 - ArrayList

배열의 특징 1- 배열과 인덱스배열과 같이 여러 데이터(자료)를 구조화 해서 다루는 것을 자료 구조라한다.자바는 배열 뿐만 아니라, 컬렉션 프레임워크라는 이름으로 다양한 자료 구조를 제공한다.컬렉션 프레임워크와 자료 구조를 설명하기 전에 먼저 자료 구조의 가장 기본이 되는 배열의 특징을 알아보자.public class ArrayMain1 { public static void main(String[] args) { int[] arr = new int[5]; //index 입력 : O(1) System.out.println("==index 입력: O(1)=="); arr[0] = 1; arr[1] = 2; arr[2] = 3; ..

공부/Java 2024.09.25

자바 제네릭(Generic) 2편

저번에 이어서 자바 제네릭을 계속 알아보자. 제네릭이 아직 뭔지 모르겠다면, 이전 포스팅을 참고하도록 하자.https://surrealcode.tistory.com/74 자바 제네릭(Generic) 1편제네릭을 배우기에 앞서 다음과 같은 코드를 살펴보자혹시라도 래퍼 클래스에 대해 잘 모른다면 이전 글을 참고하는게 좋다.https://surrealcode.tistory.com/59 자바 래퍼 클래스(wrapper class)기본형의surrealcode.tistory.com  타입 매개변수 제한이번에는 동물 병원을 만들어 본다고 가정한다. 요구사항은 다음과 같다요구사항: 개 병원은 개만 받을 수 있고, 고양이 병원은 고양이만 받을 수 있어야 한다.import generic.animal.Dog;public c..

공부/Java 2024.09.24

자바 제네릭(Generic) 1편

제네릭을 배우기에 앞서 다음과 같은 코드를 살펴보자혹시라도 래퍼 클래스에 대해 잘 모른다면 이전 글을 참고하는게 좋다.https://surrealcode.tistory.com/59 자바 래퍼 클래스(wrapper class)기본형의 한계 1자바는 객체 지향 언어이다. 그런데 바자 안에 객체가 아닌 것이 있다. 바로 int, double 같은 기본형(Primitive Type)이다. 기본형은 객체가 아니기 때문에 다음과 같은 한계가 있다.1.surrealcode.tistory.compublic class IntegerBox { private Integer value; public void set(Integer value){ this.value = value; } publi..

공부/Java 2024.09.23
반응형