전체 글(89)
-
Hash - 직접 구현하는 Set
셋을 구현하는 것은 아주 단순하다. 인덱스가 없기 때문에 단순히 데이터를 넣고, 데이터가 있는지 확인하고, 데이터를 삭제하는 정도면 충분하다. 그리고 데이터를 추가할 때 중복 여부만 체크해주면 된다.add(value) : 셋에 값을 추가한다. 중복 데이터는 저장하지 않는다.contains(value) : 셋에 값이 있는지 확인한다.remove(value) : 셋에 있는 값을 제거한다. 셋 직접 구현하기package collection.set;import java.util.Arrays;public class MyHashSetV0 { private int[] elementData = new int[10]; int size = 0; //O(n) public boolean add(int v..
2024.05.24 -
Hash
List vs Set자료 구조에서의 List와 Set은 각각 특정한 방식으로 데이터를 저장하고 관리하는 데 사용된다. 리스트 (List)정의 : 리스트는 요소들의 순차적인 컬렉션이다. 요소들은 특정 순서를 가지며, 같은 요소가 여러 번 나타날 수 있다.특징 :순서 유지 : 리스트에 추가된 요소는 특정한 순서를 유지한다. 이 순서는 요소가 추가된 순서를 반영할 수 있다.중복 허용 : 리스트는 동일한 값이나 객체의 중복을 허용한다. 예를 들어, 같은 숫자나 문자열을 리스트 안에 여러 번 저장할 수 있다.인덱스 접근 : 리스트의 각 요소는 인덱스를 통해 접근할 수 있다. 이 인덱스는 보통 0부터 시작한다.용도 : 순서가 중요하거나 중복된 요소를 허용해야 하는 경우에 주로 사용된다. 세트, 셋 (Set)정..
2024.05.24 -
List - 자바 리스트의 성능 비교
package collection.list;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class JavaListPerformanceTest { public static void main(String[] args) { int size = 50_000; System.out.println("ArrayList 추가=="); addFirst(new ArrayList(),size); addMid(new ArrayList(),size); // 찾는데O(1), 데이터 추가O(밀기)(n) ArrayList arrayList = new ArrayLi..
2024.05.24 -
List - 자바 리스트
List 자료구조 순서가 있고, 중복을 허용하는 자료 구조를 리스트라 한다. 자바의 컬렉션 프레임워크가 제공하는 가장 대표적인 자료 구조가 바로 리스트이다. 리스트와 관련된 컬렉션 프레임워크는 다음 구조를 가진다. Collection 인터페이스Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나이다. 이 인터페이스는 자바에서 다양한 컬렉션, 즉 데이터 그룹을 다루기 위한 메서드를 정의한다. Collection 인터페이스는 List, Set, Queue와 같은 다양한 하위 인터페이스와 함께 사용되며, 이를 통해 데이터를 리스트, 세트, 큐 등의 형태로 관리할 수 있다. List 인터페이스List 인터페이스는 java.util 패키지에 있는 컬렉션 프레임 워..
2024.05.23 -
List - 리스트 추상화 4 - 직접 구현한 리스트의 성능 비교
package collection.list;public class MyListPerformanceTest { public static void main(String[] args) { int size = 50_000; System.out.println("MyArrayList 추가=="); addFirst(new MyArrayList(),size); addMid(new MyArrayList(),size); // 찾는데O(1), 데이터 추가O(밀기)(n) MyArrayList arrayList = new MyArrayList(); //조회용 데이터로 사용 addLast(arrayList,size); // 찾는데O(1), 데이터 추..
2024.05.22 -
List - 리스트 추상화3 - 컴파일 타임, 런타임 의존관계
의존관계는 크게 컴파일 타임 의존관계와 런타임 의존관계로 나눌 수 있다.컴파일 타임 : 코드 컴파일 시점을 뜻한다.런타임 : 프로그램 실행 시점을 뜻한다.컴파일 타임 의존관계 vs 런타임 의존관계 컴파일 타임 의존관계컴파일 타임 의존관계는 자바 컴파일러가 보는 의존관계이다. 클래스에 모든 의존관계가 다 나타난다.쉽게 이야기해서 클레스에 바로 보이는 의존관계이다. 그리고 실행하지 않은 소스 코드에 정적으로 나타나는 의존관계이다.BatchProcessor 클래스를 보면 MyList 인터페이스만 사용한다. 코드 어디에도 MyArrayList나 MyLinkedList같은 정보는 보이지 않는다. 따라서 BatchProcessor는 MyList에만 의존한다. 런타임 의존관계 정리MyList 인터페이스의 도입으로 ..
2024.05.22