자바 벡터 클래스: 초보자를 위한 가이드

서론

안녕하세요, 미래의 자바 프로그래머! 오늘은 자바 벡터 클래스의 흥미로운 세계에 빠지려고 합니다. 아직 코드를 한 줄도 쓰지 않았다고 해도 걱정하지 마세요 - 저는 여러분의 친절한 가이드로서 여러분과 함께 여행을 갈 것입니다. 이와 같이 저는 수년 동안 교육을 하면서 수많은 학생들에게 가이드로서 기여했습니다.

Java - Vector Class

자, 여러분이 파티를 준비하는 것을 상상해봅시다. 모든 손님들을 추적하기 위해 목록을 유지해야 한다고 생각해봅시다. 이것이 바로 자바에서 벡터가 수행하는 역할입니다 - 필요에 따라 커질 수도 있고 줄일 수도 있는 동적 목록입니다. 정말 편리하지 않나요?

클래스 선언

자바에서 벡터를 어떻게 선언하는지 시작해봅시다. 생각보다 간단합니다!

import java.util.Vector;

Vector<String> guestList = new Vector<String>();

이 예제에서는 guestList라는 벡터를 생성하고 있으며, 이 벡터는 String 객체를 저장할 것입니다 (이 경우, 파티 손님들의 이름). <String> 부분은 자바에게 이 벡터에 저장할 객체의 타입을 알려줍니다.

클래스 생성자

이제 벡터를 생성하는 다양한 방법을 살펴봅시다. 이는 얼마나 큰 파티를 열고 싶은지 선택하는 것과 같습니다!

// 기본 생성자
Vector<Integer> v1 = new Vector<>();

// 초기 용량을 가진 생성자
Vector<Integer> v2 = new Vector<>(10);

// 초기 용량과 용량 증가를 가진 생성자
Vector<Integer> v3 = new Vector<>(10, 5);

// 다른 컬렉션에서 생성자
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
Vector<Integer> v4 = new Vector<>(list);

이 생성자들은 모두 약간 다르게 벡터를 생성합니다:

  1. 기본 생성자는 빈 벡터를 생성합니다.
  2. 두 번째는 초기 용량이 10인 벡터를 생성합니다.
  3. 세 번째는 초기 용량이 10이고, 필요에 따라 5씩 증가하는 벡터를 생성합니다.
  4. 마지막은 기존 컬렉션(이 경우, ArrayList)에서 벡터를 생성합니다.

클래스 메소드

벡터 클래스는 유용한 메소드가 가득한 도구箱을 제공합니다. 일부 가장 일반적인 메소드를 살펴보겠습니다:

메소드 설명
add(E element) 벡터의 끝에 요소를 추가합니다
add(int index, E element) 지정된 위치에 요소를 삽입합니다
get(int index) 지정된 위치의 요소를 반환합니다
remove(int index) 지정된 위치의 요소를 제거합니다
size() 벡터에 있는 요소의 수를 반환합니다
clear() 벡터의 모든 요소를 제거합니다
contains(Object o) 벡터에 지정된 요소가 포함되어 있으면 true를 반환합니다

상속된 메소드

벡터는 외롭지 않습니다 - 부모 클래스에서 메소드를 상속받습니다. 이러한 메소드에는 다음이 포함됩니다:

  • AbstractList에서: hashCode(), equals()
  • AbstractCollection에서: toString()
  • Object에서: clone(), finalize()

이러한 상속된 메소드들은 벡터에 더 많은 기능을 제공합니다!

요소 추가 및 벡터 반복 예제

이제 지식을 실제로 적용해보겠습니다. 자신이 좋아하는 아이스크림 맛을 담은 벡터를 만들고, 그后 출력해보겠습니다.

import java.util.Vector;

public class IceCreamParty {
public static void main(String[] args) {
// 아이스크림 맛을 저장할 새로운 벡터를 생성합니다
Vector<String> iceCreamFlavors = new Vector<>();

// 벡터에 몇 가지 맛을 추가합니다
iceCreamFlavors.add("초콜렛");
iceCreamFlavors.add("바닐라");
iceCreamFlavors.add("딸기");
iceCreamFlavors.add("민트 칩");

// 모든 맛을 출력합니다
System.out.println("우리의 아이스크림 맛:");
for (String flavor : iceCreamFlavors) {
System.out.println("- " + flavor);
}

// 특정 위치에 또 다른 맛을 추가합니다
iceCreamFlavors.add(2, "쿠키 던치");

// 업데이트된 목록을 출력합니다
System.out.println("\n업데이트된 아이스크림 맛:");
for (int i = 0; i < iceCreamFlavors.size(); i++) {
System.out.println((i+1) + ". " + iceCreamFlavors.get(i));
}
}
}

이를 분석해보겠습니다:

  1. 새로운 벡터를 iceCreamFlavors라는 이름으로 생성합니다.
  2. add() 메소드를 사용하여 네 가지 맛을 추가합니다.
  3. for-each 루프를 사용하여 모든 맛을 출력합니다.
  4. 인덱스 2(즉, 세 번째 위치)에 "쿠키 던치"를 추가합니다.
  5. 마지막으로, 전통적인 for 루프를 사용하여 업데이트된 목록을 번호를 붙여 출력합니다.

출력

이 코드를 실행하면 다음과 같은 결과를 볼 수 있습니다:

우리의 아이스크림 맛:
- 초콜렛
- 바닐라
- 딸기
- 민트 칩

업데이트된 아이스크림 맛:
1. 초콜렛
2. 바닐라
3. 쿠키 던치
4. 딸기
5. 민트 칩

그리고 이렇게 하면 됩니다! 여러분은 벡터를 생성하고, 수정하고, 반복하는 데 성공했습니다. 이제는 정말 자바 프로그래머로서 느끼실 수 있겠죠?

기억해주세요, 연습이 제일 중요합니다. 다양한 타입의 객체를 담은 벡터를 만들어보거나, 우리가 논의한 다른 메소드를 실험해보세요. 잠시 후면 벡터를 전문가처럼 다루는 데에 능숙해질 거예요!

자바의 벡터 클래스는 프로그래밍 도구箱에 강력한 도구입니다. 현대 자바 프로그래밍에서는 성능 이유로 주로 ArrayList로 대체되었지만, 벡터를 이해하는 것은 여전히 가치가 있습니다. 특히 레거시 코드를 작업하거나, 스레드 안전한 동적 배열이 필요할 때는 더욱 그렇습니다.

그래서, 계속 코드를 작성하고, 배우며, 가장 중요한 것은 자바를 즐기세요!

Credits: Image by storyset