Java 9일차

16638 단어 JavaJava

인터페이스(interface)(⭐️⭐️⭐️⭐️⭐️)

  • 자바는 다중 상속을 지원하지 않으므로 인터페이스를 사용해서 다중 상속(구현)을 구현
  • 다른 클래스를 작성할때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 매개 역할을 담당하는 일종의 추상 클래스와 비숫
  • 인터페이스는 추상 메소드와 상수만을 포함할 수 있음(자바8부터 인스턴스 메소드, static 메소드를 포함)

인터페이스 작성

접근제어자 interface 인터페이스명{
	public static final 타입 상수명 =;

	public abstract 메소드명(매개변수1, 매개변수2..);
}
  • 인터페이스의 모든 필드는 public static final 이여야 함
  • 인터페이스의 모든 메소드는 public abstract 이여야 함

인터페이스 구현

class 클래스이름 implements 인터페이스명 {

}
  • 자바의 상속과 구현을 동시에 하려면
class 클래스이름 extends 부모클래스명 implements 인터페이스명 {
}
  • 여러 개의 인터페이스를 구현하려면
class 클래스이름 implements 인터페이스명, 인터페이스..{
}

인스턴스 메소드

  • 클래스에서 작성하는 일반적인 메소드
  • 인터페이스에서 작성시 default 키워드를 붙여 만듦

컬렉션 프레임워크(매우 중요🔥🔥🔥🔥🔥)

  • 여러가지 데이터를 메모리에서 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
  • 자료구조를 구현한 클래스의 모음
자료구조란?
  • 데이터를 효율적으로 관리할 수 있는 데이터 구조를 의미
  • 코드 상에서 효율적으로 데이터를 처리하기 위해, 데이터의 특성에 따라 체계적으로 구조화함
알고리즘이란?
  • 어떤 문제를 풀기 위한 절차 및 방법
  • 어떤 문제에 대해 압력을 넣으면 원하는 출력을 얻을 수 있도록 만드는 프로그래밍

1. List 인터페이스

  • 순서가 있는 데이터들의 집합으로 데이터의 중복을 허용
  • Vector, ArrayList, LinkedList, Stack, Queue

1) Vector 클래스

  • 자바의 배열은 고정 길이를 사용
  • 동적인 길이로 여러 데이터 형을 저장하기 위해 사용
  • 배열과 동이랗게 정수 인덱스를 이용하여 액세스 할 수 있음
  • 동기화 되어 있으며 한번에 하나의 스레드만 벡터의 메소드를 호출 할 수 있음

    Vector<타입> 참조 변수 = new Vector(요소의 개수);

메소드설명
addElement()요소 추가
removeAllElements()저장된 모든 요소를 삭제
size()요소의 개수 반환
capacity()현재 벡터에 저장 가능한 크기
get()인덱스로 저장된 값 반환
set()인덱스로 저장된 값 변경

2) ArrayList 클래스

  • 동적인 길이로 여러 데이터형을 저장하기 위해 사용
  • 배열과 동이랗게 정수 인덱스를 이용하여 액세스 할 수 있음
  • 비동기식을 사용하며 멀티 스레드를 지원

ArrayList<타입> 참조변수 = new ArrayList();

메소드설명
add()요소 추가
remove()해당 인덱스를 이용하여 요소 삭제
size()요소의 개수 반환
capacity()현재 ArrayList에 저장 가능한 크기
set()인덱스로 저장된 값 변경

3) LinkedList 클래스

  • 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식
    - 노드 : 데이터(값)와 포인터(주소)를 담고 있는 형태
  • ArrayList에 비해 데이터의 추가나 삭제가 빠름
  • 인덱스가 없기 때문에 특정 요소에 접근이 느림
  • 탐색 또는 정렬을 자주하는 경우에는 배열을 사용하고, 데이터의 추가/삭제가 많은 경우는 LinkedList를 사용하는 것이 좋음

예제)

import java.util.LinkedList;

public class LinkedList1 {
    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("김사과");
        linkedList.add("반하나");
        linkedList.add("오렌지");
        linkedList.add("이메론");
        linkedList.add("배애리");
        System.out.println(linkedList);
        System.out.println(linkedList.peek()); // 맨 앞에 있는 자료 뽑기
        System.out.println(linkedList.poll());
        System.out.println(linkedList);
        linkedList.remove("오렌지");
        System.out.println(linkedList);
    }
}

4) Stack

Stack stack = new Stack();

  • LIFO(후입선출) 자료구조를 구현한 클래스
  • 한쪽 끝에서만 자료를 넣고 뺄수 있는 형식의 자료구조
메소드설명
push()객체 삽입
pop()객체 제거
peek()마지막 데이터 반환
search()데이터 순서 반환

예제)

import java.util.Stack;

public class Stack1 {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        System.out.println(stack.hashCode());
        stack.push(40);
        stack.push(100);
        stack.push(80);
        stack.push(50);
        stack.push(20);
        System.out.println(stack);
        System.out.println(stack.peek());
        System.out.println(stack);
        System.out.println(stack.pop());
        System.out.println(stack);
        System.out.println(stack.search(40)); // 4번째에 있다.
    }
}

5) Queue

Queue queue = new LinkedList();

  • FIFO 자료구조에서 사용되는 메소드 정의

  • 큐는 한쪽 끝은 프론트로 정하여 삭제 연산만 수행

  • 다른 한쪽 끝은 리어로 정하여 삽입 연산만 수행

  • 컴퓨터 버퍼에서 주로 사용

  • Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList.

    메소드설명
    offer()객체 추가
    poll()첫번째 데이터를 반환하고 제거
    peek()첫번째 데이터 반환
    remove()값 제거
    clear()queue를 초기화


👉🏻 다음 강의에서 설명

2. Set 인터페이스

  • 순서가 없는 데이터 집합으로 데이터의 중복을 허용하지 않음
  • HashSet, TreeSet

3. Map 인터페이스

  • 키와 값의 한쌍으로 이루어지는 데이터의 집합으로 순서가 없고, 키는 중복으로 허용하지 않지만 값은 중복될 수 있음
  • HashMap, TreeMap, HashTable, Properties

좋은 웹페이지 즐겨찾기