1. MyLinkedList를 구현 조건 양방향으로 구현 CRUD(add, get, set, delete) 기본적으로 구현(삭제, 삽입 위치는 상관 없음) 제네릭은 구현해도 되고 안해도 됨 2. 구현 코드 class Node 양방향이기 때문에 클래스 Node의 필드를 Node left, Node right를 선언하고 T num에 값을 넣도록 함 는 제네릭으로 원하는 타입을 사용 할 수 있도록 함 class Node { Node left; Node right; T num; Node(T n) { num = n; } } MyLinkedList MyLinkedList 객체를 생성했을 때 객체가 CRUD가 일어 날 수 있도록 add(), get(), set(), delete() 메소드를 직접 구현 해 주었다. C..
1. upCasting(업캐스팅) 참조형 캐스팅의 경우 사용하는 경우다. 기본적으로 캐스팅은 서로 관련없는 데이터끼리는 변환되지 않는다. 참조형에서 참조형 데이터가 서로 관련이 있다는 것은 무슨 의미냐면 가. 상속 관계가 맺어진 경우, 나. 인터페이스로 인해 확장이 된 경우를 말한다. 가. 상속 관계가 맺어진 경우 class Parent가 있고 class Child extends Parent 클래스가 있다고 가정하자. Child는 Parent 클래스를 상속 받으므로 Child 클래스가 Parent 클래스 보다 가지고 있는 데이터 양이 무조건 많다. 왜냐하면 Child 클래스는 적어도 Parent 클래스의 데이터를 가지고 있기 때문이다. (1). Parent parent = new Child(); pare..
instanceof 연산자 참조변수가 참조하고 있는 인스턴의 실제 타입을 알아보기 위해 instanceof 연산자를 사용한다. 타입을 확인하는 이유는 참조변수가 instanceof로 형 변환이 가능한 타입인지 연산하기 위함이다. 주로 조건문에 사용되며, instanceof의 왼쪽에서 참조변수를 오른쪽에는 타입(클래스명)이 피연산자로 위치한다. 그리고 연산의 결과로 boolean 값인 true, false 중 하나를 반환한다. instanceof를 이용한 연산결과로 true를 얻었다는 것은 참조변수가 검사한 타입으로 형변환이 가능하다는 것이다. 즉, 형 변환이 가능하다면 true, 불가능 하다면 false를 반환한다. 반드시 상속 관계일 경우에 사용한다. 자녀객체 instanceof 부모타입 ==> tru..
1. Create // 1번 방법 Create : 데이터 생성.추가 , 일반적으로 아래 두가지 방법이 사용된다. list.add(new Apple(10, "호랑이")); Apple a1 = new Apple(20, "코끼리"); list.add(a1); // 2번 방법 Create for(int i = 0 ; i < 5 ; ++i) { list.add(new Apple(i*10+20, "독수리"+i)); } 2. Reading // Reading : 데이터를 끄집어내는 것, 즉, 데이터를 읽는 것을 말한다. for (Apple item : list) { // System.out.println(item); // 이렇게 출력하면 자신 고유의 번호가 출력된다. item.output(); } 3. Update ..
1. Collections Collections는 내부에 static함수가 있기 때문에 객체를 생성하지 않고 바로 메소드를 사용 할 수 있다. Collection 프레임워크 등에서 sort()를 사용하면 컴퓨터가 알아서 정렬을 해 주는데 오늘은 sort()를 이용한 정렬에 대해 알아보고자 한다. 여기서 sort()는 Comparable 구현에 의해 정렬된 것이다. 2. Array.sort()와 Collections.sort()의 차이점은? 아래와 같이 쉽게만 이해하자! 가. Array.sort() - 배열 정렬의 경우 나. Collections.sort() - List Collection 정렬의 경우 3. Comparator과 Comparable은 무엇이 다른가? Comparator : 기본 정렬기준 외..
1. LinkedList(연결리스트) LinkedList란 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. 이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당한다. 늘어선 노드의 중간지점에서도 자료의 추가와 삭제가 O(1)의 시간에 가능하다는 장점을 갖는다. 그러나 배열이나 트리 구조와는 다르게 특정 위치의 데이터를 검색해 내는데에는 O(n)의 시간이 걸린다는 단점이 있다. 2. LinkedList(연결리스트)의 구조 노드(Node)와 링크(Link)로 구성된다. 노드(Node) : 실제 정보를 담고 있는 하나의 단위이다. 링크(Link) : 노드간의 위치정보를 저장하고 있어 연결리스트의..
1. JAVA Collection Framework JAVA에서 기본적인 자료구조를 제공하기 위한 환경 2. 각 인터페이스의 특징 인터페이스 구현 클래스 특징 List LinkedList Stack Vector ArrayList 순서가 있는 데이터의 집합, 데이터의 중복을 허용함 Set HashSet TreeSet 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음 Map HashMap TreeMap HashTable Properties 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합 순서는 유지되지 않고, 키는 중복을 허용하지 않으며 값의 중복을 허용함 3. Collection 인터페이스들의 특징 Collection 인터페이스를 상속받아 List와 Set 인터페이스가 된다..
1. 클라이언트(Client) / 서버(Server) 클라이언트/서버는 두 개의 컴퓨터 프로그램 사이에 이루어지는 역할 관계를 나타내는 것임 클라이언트/서버 개념은 단일 컴퓨터 내에서도 적용할 수 있지만, 네트워크 환경에서 더 큰 의미를 가짐 네트워크 상의 클라이언트/서버 모델은 여러 다른 지역에 걸쳐 분산되어 있는 프로그램들을 연결시켜주는 편리한 수단을 제공함 가. 클라이언트(Client) 다른 프로그램에세 서비스를 요청하는 프로그램 서비스를 사용하는 컴퓨터 나. 서버(Server) 클라이언트의 요청에 대해 응답해주는 프로그램 서비스를 제공하는 컴퓨터 일반적으로 서버프로그램이 먼저 활성화된 상태에서 클라이언트의 요구사항을 기다리는데, 대체로 다수의 클라이언트 프로그램이 하나의 서버를 공유함 서비스는 서..