본문 바로가기
728x90

자료구조11

[자료구조] 요소 순환 (Iterator) 💡 Collection 요소를 순회하는 Iterator 요소의 순회란? 컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조하는것 순서가 있는 List인터페이스의 경우는 Iterator를 사용 하지 않고 get(i) 메서드를 활용할 수 있음 Set 인터페이스의 경우 get(i) 메서드가 제공되지 않으므로 Iterator를 활용하여 객체를 순회함 Iterator 사용하기 boolean hasNext() : 이후에 요소가 더 있는지를 체크하는 메서드, 요소가 있다면 true를 반환 E next() : 다음에 있는 요소를 반환 public boolean removeMember(int memberId){ // 멤버 아이디를 매개변수로, 삭제 여부를 반환 Iterator ir = arrayList.iterato.. 2023. 8. 28.
[자료구조] 컬렉션 프레임워크 (Collection Framework) 컬렉션 프레임워크 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 JDK 라이브러리 java.util 패키지에 구현되어 있음 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요함 Collection 인터페이스 하나의 객체를 관리하기 위한 메서드가 선언된 인터페이스의 하위에 List와 Set 인터페이스가 있음 List 인터페이스 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스 자료구조 리스트 (배열, 연결리스트)의 구현을 위한 인터페이스 중복을 허용함 ArrayList, Vector, LinkedList, Stack, Queue 등… Set 인터페이스 순서와 관계없이 중복을 허용.. 2023. 8. 28.
[자료구조] 와일드 카드(Wildcard) 💡 Wildcard란?? 제네릭 클래스의 객체를 메소드의 매개변수로 받을 때, 그 객체의 타입 변수를 제한하는 것을 말한다. 즉 ‘제한된 제네릭 클래스’라고 할 수 있다. 활용 예시 메서드에서 제네릭 클래스의 객체를 매개변수로 받는 경우 **public void myMethod**(ArrayList list) { . . . } 이 메소드는 ArrayList를 매개변수로 받고 있지만, ArrayList가 담고 있는 '타입 변수'는 Number를 상속받은 객체들이어야 정상적으로 작동 하도록 설계되었다. 하지만 ArrayList가 어떤 타입 변수를 가지고 있던지 간에 모두 받아 들일 가능성이 있다. 이런 경우에 와일드 카드를 이용하여서 ArrayList의 '타입 변수'를 지정 할 수 있다. **public v.. 2023. 8. 28.
[자료구조] 제네릭(generic) 💡 제네릭 자료형 정의 클래스에서 사용하는 변수의 자료형이 여러개 일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고, 추후 해당 클래스를 사용할 때 지정함. 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 제네릭은 매개변수화된 유형을 의미한다. 이것은 Integer, String, ...등 및 사용자 정의 유형의 메서드, 클래스 및 인터페이스에 대한 매개변수가 될 수 있도록 하는 것이다. 제네릭을 이용하면 다양한 데이터 유형을 작동하는 클래스를 생성할 수 있다. 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. public class GenericPrinter { private T mat.. 2023. 8. 28.
[자료구조] 큐(Queue) 기본 자료 구조의 한 가지로, 먼저 집어 넣은 데이터가 먼저 나오는 저장 구조이다. 💡 큐의 특징 맨 앞(front)에서 자료를 꺼내거나 삭제하고, 맨 뒤(rear)에서 자료를 추가 함 First In First Out (선입선출) 구조 일상 생활에서 일렬로 줄 서 있는 모양 순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용되는 자료구조 콜센터에 들어온 문의 전화, 메세지 큐 등에 활용 jdk 클래스 : ArrayList import linkedlist.MyListNode; import linkedlist.MyLinkedList; interface IQueue{ public void enQueue(String data); public String deQueue(); public void printA.. 2023. 8. 28.
[자료구조] 스택(Stack) 스택은 “쌓다” 라는 의미로 데이터를 차곡차곡 쌓아 올린 형태의 자료구조 이다. 💡 스택의 특징 맨 마지막 위치(top)에서만 자료를 추가, 삭제, 추출 할 수 있음. Last In First Out (후입선출) 구조. 가장 최근의 자료를 찾아오거나 히스토리를 유지하고 무를 때 사용할 수 있음. 함수의 메모리는 호출 순서에 따른 stack구조. jdk 클래스 : Stack import array.MyArray; public class MyArrayStack { int top; MyArray arrayStack; public MyArrayStack() { top = 0; arrayStack = new MyArray(); } public MyArrayStack(int size) { arrayStack = n.. 2023. 8. 28.
[자료구조] 연결 리스트 (LinkedList) 연결 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조. 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음, 이전의 노드와 연결. 💡 연결 리스트 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음 자료가 추가될 때 노드 만큼의 메모리를 할당 받고 이전 노드의 링크로 연결함 (정해진 크기가 없음) 연결 리스트의 i번째 요소를 찾는데 걸리는 시간은 요소의 개수에 비례 : O(n) jdk 클래스 : LinkedList public class MyListNode { private String data; // 자료 public MyListNode next; /.. 2023. 8. 28.
[자료구조] 배열(Array) 동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조이다. 즉, 연관된 데이터를 그룹화하여 묶어준다고 생각하면 된다. 💡 배열의 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 정해진 크기가 있음 요소의 추가와 제거 시 다른 요소들의 이동이 필요함 배열의 i번째 요소를 찾는 인덱스 연산이 빠름 jdk 클래스 : ArrayList, Vector4 Ex > public class MyArray { int[] intArr; //int array int count; //개수 public int ARRAY_SIZE; public static final int ERROR_NUM = -999999999; public MyArray() { count = 0; ARRAY_SIZE .. 2023. 8. 28.
[자료구조] 자료구조에 대하여 💡 자료구조란 무엇인가? (Data Structure) 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법들 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 자료의 효율적인 관리는 프로그램의 수행 속도와 밀접한 관련이 있음 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요함 💡 자료구조에는 어떤 것들이 있나? 선형 자료구조 (Linear) 배열 (Array) : 정해진 크기의 메모리를 먼저 할당 받아 사용하고, 자료의 물리적 위치와 논리적 위치가 같음 연결 리스트 (LinkedList) : 자료가 추가될 때마다 메모리를 할당 받고, 자료는 링크로 연결됨. 자료의 물리적 위치와 논리적 위치가 다를 수 있음. 스택 (St.. 2023. 8. 28.
728x90