본문 바로가기

개발/Java

Java의 자료구조

Java는 다양한 자료구조를 제공하여 프로그래머들이 데이터를 보다 쉽게 관리하고 조작할 수 있도록 도와줍니다. 자료구조는 데이터를 조직화하고 저장하기 위해 사용되며, Java는 이를 위해 다양한 클래스와 인터페이스를 제공합니다.

 

 

배열 (Array)

자료구조 중에서 가장 기본이 되는 것은 배열입니다. 배열은 동일한 데이터 타입을 가진 값들의 집합체입니다. Java에서 배열은 고정된 크기를 가지며, 한 번 생성된 배열의 크기는 변경할 수 없습니다.

Java에서 배열은 다음과 같은 형식을 가집니다:

int[] myArray = new int[5];

위의 코드에서는 myArray라는 이름의 배열이 생성되며, 크기는 5입니다. 이 배열은 int 타입의 값을 저장할 수 있습니다. 배열의 각 항목은 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작합니다.

myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
myArray[3] = 4;
myArray[4] = 5;

위의 코드는 배열 myArray에 1부터 5까지의 값을 저장하는 예시입니다.

 

 

리스트 (List)

리스트는 순서가 있는 값들의 집합체입니다. Java에서는 ArrayList와 LinkedList 등 다양한 리스트 클래스를 제공합니다. ArrayList는 배열과 유사한 방식으로 작동하며, LinkedList는 각 값들이 서로 연결된 형태로 작동합니다.

아래는 ArrayList를 사용한 예시입니다:

import java.util.ArrayList;

public class MyList {
  public static void main(String[] args) {
    ArrayList<String> myList = new ArrayList<String>();
    myList.add("apple");
    myList.add("banana");
    myList.add("orange");
    System.out.println(myList);
  }
}

위의 코드는 myList라는 ArrayList를 생성하고, "apple", "banana", "orange"라는 값을 추가하는 예시입니다. System.out.println(myList) 구문은 ArrayList를 출력합니다.

출력 결과:

[apple, banana, orange]

LinkedList를 사용하는 방법도 매우 유사합니다.

 

 

스택 (Stack)

스택은 후입선출 (LIFO) 구조를 가지는 자료구조입니다. Java에서는 Stack 클래스를 제공하여 스택을 구현할 수 있습니다.

import java.util.Stack;

public class MyStack {
  public static void main(String[] args) {
    Stack<Integer> myStack = new Stack<Integer>();
    myStack.push(1);
    myStack.push(2);
    myStack.push(3);
    System.out.println(myStack.pop());
    System.out.println(myStack.pop());
    System.out.println(myStack.pop());
  }
}

위의 코드는 myStack라는 Stack을 생성하고, 1, 2, 3 값을 추가합니다. myStack.pop() 구문은 Stack에서 값을 삭제하고 출력합니다.

출력 결과:

3
2
1

이 예시에서는 Integer 타입의 값을 사용했지만, 다른 데이터 타입도 사용할 수 있습니다.

 

 

큐 (Queue)

큐는 선입선출 (FIFO) 구조를 가지는 자료구조입니다. Java에서는 Queue 인터페이스를 제공하여 큐를 구현할 수 있습니다.

import java.util.LinkedList;
import java.util.Queue;

public class MyQueue {
  public static void main(String[] args) {
    Queue<String> myQueue = new LinkedList<String>();
    myQueue.add("apple");
    myQueue.add("banana");
    myQueue.add("orange");
    System.out.println(myQueue.poll());
    System.out.println(myQueue.poll());
    System.out.println(myQueue.poll());
  }
}

위의 코드는 myQueue라는 큐를 생성하고, "apple", "banana", "orange"라는 값을 추가합니다. myQueue.poll() 구문은 큐에서 값을 삭제하고 출력합니다.

출력 결과:

apple
banana
orange

이 예시에서는 String 타입의 값을 사용했지만, 다른 데이터 타입도 사용할 수 있습니다.

 

 

집합 (Set)

집합은 중복된 값을 허용하지 않는 자료구조입니다. Java에서는 HashSet, TreeSet 등 다양한 집합 클래스를 제공합니다.

아래는 HashSet을 사용한 예시입니다:

import java.util.HashSet;

public class MySet {
  public static void main(String[] args) {
    HashSet<String> mySet = new HashSet<String>();
    mySet.add("apple");
    mySet.add("banana");
    mySet.add("apple");
    System.out.println(mySet);
  }
}

위의 코드는 mySet라는 HashSet을 생성하고, "apple", "banana"라는 값을 추가하는 예시입니다. "apple"이 이미 추가되어 있지만, 중복된 값은 제거되어 하나만 저장됩니다. System.out.println(mySet) 구문은 HashSet을 출력합니다.

출력 결과:

[apple, banana]

TreeSet을 사용하는 방법도 매우 유사합니다.

 

 

맵 (Map)

맵은 key-value 쌍으로 이루어진 자료구조입니다. Java에서는 HashMap, TreeMap 등 다양한 맵 클래스를 제공합니다.

Java에서는 Map 인터페이스를 제공하여 맵을 구현할 수 있습니다. 아래는 HashMap을 사용한 예시입니다:

import java.util.HashMap;

public class MyMap {
  public static void main(String[] args) {
    HashMap<String, Integer> myMap = new HashMap<String, Integer>();
    myMap.put("apple", 1);
    myMap.put("banana", 2);
    myMap.put("orange", 3);
    System.out.println(myMap.get("banana"));
  }
}

위의 코드는 myMap라는 맵을 생성하고, "apple", "banana", "orange"라는 키와 1, 2, 3이라는 값을 추가하는 예시입니다. myMap.get("banana") 구문은 키가 "banana"인 값을 출력합니다.

출력 결과:

2

이 예시에서는 String과 Integer 타입을 사용했지만, 다른 데이터 타입도 사용할 수 있습니다.

[Http 상태 코드]

HTTP 상태 코드는 웹 서버에 대한 요청의 상태를 나타내는 세 자리 코드입니다. 다양한 상태 코드가 있지만 일반적으로 사용되는 것은 다음과 같습니다.

  • 200 OK: 요청이 성공적으로 처리되었습니다.
  • 404 Not Found: 요청한 리소스를 서버에서 찾을 수 없습니다.
  • 500 Internal Server Error: 서버에서 요청을 처리하는 동안 오류가 발생했습니다.

다른 많은 상태 코드가 있으며, 사용되는 상황에 따라 다른 의미를 가집니다

HTTP 상태 코드 중 400은 클라이언트 측에서 잘못된 요청을 보냈을 때 발생하는 오류 코드입니다. 이는 잘못된 요청 구문, 누락된 요청 구성 요소, 유효하지 않은 요청 메시지, 권한 없는 요청 등이 있을 때 발생합니다.