목록✅🌲강의 복습 노트 (105)
컴퓨터공학 💻 도서관📚
제네릭 메서드자료형 매개변수(T, V)를 메서드의 매개변수나 반환 값으로 가지는 메서드자료형 매개 변수가 하나 이상인 경우도 있음제네릭 클래스가 아니어도 내부에 제네릭 메서드는 구현하여 사용 할 수 있음public 반환형 메서드 이름(자료형 매개변수.....) { }제네릭 메서드의 활용 예 두 점(top, bottom)을 기준으로 사각형을 만들 때 사각형의 너비를 구하는 메서드를 만들어 보자두 점은 정수인 경우도 있고, 실수인 경우도 있으므로 제네릭 타입을 사용하여 구현한다.public class Point { // 제네릭 클래스 T x; // x 는 T 자료형 V y; // y 는 V 자료형 Point(T x, V y){ this.x..

generic type를 쓰게 되면 t 라는 위치에 어느 자료형이든 들어가도 상관이 없는데 그렇게 되는 경우에 또 문제가 발생할 수 있다.그래서 type 에 대한 어떤 제한을 두기 위해 extends 상속을 이용한다. (아무거나 막 못 쓰게 하는 기능)이 클래스에서 상속받은 클래스만 T 대신에 쓸 수 있다. 라는 의미이다. 상위 클래스의 필요성T 자료형의 범위를 제한 할 수 있음상위 클래스에서 선언하거나 정의하는 메서드를 활용할 수 있음상속을 받지 않는 경우 T는 Object로 변환되어 Object 클래스가 기본으로 제공하는 메서드만 사용가능 T extends 를 사용한 프로그래밍GenericPrinter 에 material 변수의 자료형을 상속받아 구현T에 무작위 클래스가 들어갈 수 없게..
제네릭(Generic) 자료형 정의여러 자료형이 쓰일 수 있는 변수 , 다양한 자료형이 쓰일 수 있는 변수가 있다.그래서 그 변수를 기반으로 클래스를 만든다고 했을 때 다양한 자료형이 쓰이기 때문에클래스를 여러 개를 만들면 너무 오버헤드가 된다 그래서 다양한 자료형이 적용될 수 있는 클래스나 메서드를 만드는게 제네릭 프로그래밍 방식이다.클래스에서 사용하는 변수의 자료형이 여러개 일 수 있고, 그 변수에 대한 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 일반화 해놓은 다음에 추후 해당 클래스를 사용할 때 자료형을 지정할 수 있도록 선언실제 사용되는 자료형의 변환이 오류 여부는 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식제네릭 프로그래밍은 JDK 컬렉션 프레임워크에서 많이 사용된다. ..
Queue의 특징맨 앞( front ) 에서 자료를 꺼내거나 삭제하고, 맨 뒤( rear )에서 자료를 추가 함Fist In First Out (선입선출) 구조일상 생활에서 일렬로 줄 서 있는 모양순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용 되는 자료구조콜센터에 들어온 문의 전화, 메세지 큐 등에 활용됨jdk 클래스 : ArrayList 연결리스트로 구현했기 떄문에 꽉 차 있는 경우는 생각하지 않아도 된다.그래서 비어 있는 경우만 고려하면 된다 import linkedlist.MyListNode; // 이건 밑에 있다import linkedlist.MyLinkedList;interface IQueue{ // 인터페이스 선언해서 구현 public void enQu..
Stack의 특징 맨 마지막 위치( top )에서만 자료를 추가,삭제, 꺼내올 수 있음 (중간의 자료를 꺼낼 수 없음)Last In First Out ( 후입선출 ) 구조택배 상자가 쌓여있는 모양가장 최근의 자료를 찾아오거나 게임(바둑, 장기)에서 히스토리를 유지하고 이를 무를때 사용할 수 있음함수의 메모리는 호출 순서에 따른 stack 구조요소를 넣는 건 push() , 요소를 제거해서 꺼내는 건 pop() , 데이터를 꺼내 보기만 하는 건 peek() 이라고 한다jdk 클래스 : Stackimport array.MyArray; // 이거 링크는 밑에 있다public class MyArrayStack { int top; MyArray arrayStack; // 배열로 스택을 구현 p..

연결 리스트(LinkedList) 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음자료가 추가 될때 노드 만큼의 메모리를 할당 받고 이전 노드의 링크로 연결함 (정해진 크기가 없음)연결 리스트의 i 번째 요소를 찾는게 걸리는 시간은 요소의 개수에 비례 : O(n)jdk 클래스 : LinkedList public class MyListNode { private String data; // 자료 public MyListNode next; // 다음 노드를 가리키는 링크 public MyListNode(){ // 생성자 1 : 아무 입력이 없을 경우 data = null; next = null; }..
Array 의 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조정해진 크기가 있음요소의 추가와 제거시 다른 요소들의 이동이 필요함배열의 i 번째 요소를 찾는 인덱스 연산이 빠름jdk 클래스 : ArrayList, VectorArray 구현하기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 = 10; intArr = new int[ARRAY_SIZE]; } public MyArray(int size) { co..

자료구조란 무엇인가?프로그램에서 사용할 많은 데이타를 메모리 상에서 관리하는 여러 구현방법들효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요함 자료구조에는 어떤 것들이 있나? * 한 줄로 자료를 관리하기 (선형 자료구조 : 배열, 연결 리스트, 스택, 큐) * 선형 자료구조는 앞뒤의 요소가 1 대 1의 관계이다. (1 대 다 , 다 대 다 의 관계도 있다.) 배열 (Array) : 선형으로 자료를 관리, 정해진 크기의 메모리르 먼저 할당받아 사용하고, 자료의 물리적 위치와 논리적 위치가 같음 ..