코딩/2-JAVA

C1404콜렉션벡터_개념

tree0505 2025. 7. 9. 11:02
반응형
    • C14콜렉션

  • C1404콜렉션벡터_개념

  • C1404개념01_래퍼클래스
package C1404콜렉션벡터_개념;

/*
	collection : 데이터를 저장하기 위한 유용한 클래스
	Vector, ArrayList
 */

/*
	# 래퍼 클래스(wrapper class)
	- 래퍼 클래스란, 기본 자료형을 클래스로 만들어 놓은 것을 의미한다.
	
	-래퍼클래스는 기본 자료형을 클래스로 바꾼것 
		[기본형]          [래퍼 클래스]
		byte             Byte
		short            Short
		int              Integer
		long             Long
		float            Float
		double           Double
		char             Character
		boolean          Boolean	
 */

public class C1404개념01_래퍼클래스 {
	public static void main(String[] args) {
		
		int i1 = 10;
					// deprecated
		Integer i3 = new Integer(10);
		Integer i2 = Integer.valueOf("10");
		System.out.println(i1);
		System.out.println(i2);
		System.out.println("---------------");
		
		float f1 = 10.1f;
		Float f2 = Float.valueOf(10.1f);
		//f2 = 10,1f; //이렇게 해도 된다. 
		System.out.println(f1);
		System.out.println(f2);
		System.out.println("---------------");
		
		double d1 = 10.11;
		Double d2 = Double.valueOf(10.11);
		System.out.println(d1);
		System.out.println(d2);
		System.out.println("---------------");
		
		char ch1 = 'a';
		Character ch2 = Character.valueOf('a');
		System.out.println(ch1);
		System.out.println(ch2);
		System.out.println("---------------");
		
		
		long l1 = 10000000000000l;
		Long l2 = Long.valueOf(1000000000000000l);
		System.out.println(l1);
		System.out.println(l2);
		System.out.println("---------------");
		
		boolean b1 = false;
		Boolean b2 = Boolean.valueOf(true);
		System.out.println(b1);
		System.out.println(b2);
		System.out.println("---------------");
		
	}
}

  • C1404개념02_콜렉션
    • 콜렉션이 무엇인가. 
    • 자바스크립트처럼 무한대인것이다. 
    • add를 무한대로 할 수 있다. 
package C1404콜렉션벡터_개념;

import java.util.Vector; //임포트 

/*
	# 배열의 한계
		. 배열은 한번 선언하면 프로그램에서 그 크기를 바꿀 수 없다.
		. 가변배열을 직접 만들어서 사용했지만,
		  자바에서는 Vector 클래스를 통해 가변배열을 제공한다.
	# 특징
		. 특이하게 <>꺽쇠를 사용하는데 이를 제네릭(generic)이라고 부른다.
		. 저장할 수 있는 데이터의 타입은 클래스 타입만 가능하다.
		. int, doulbe 이와 같은 기본 자료형을 저장할 수 없기 때문에
		  Integer, Double 과 같은 래퍼 클래스를 이용해야 한다.
	# 선언하는 방법
		Vector<Integer> vector = new Vector<Integer>();
		
	# 주요 기능
		1. 추가 		: add
		2. 삭제 		: remove
		3. 전부 삭제 	: clear
		4. 개수		: size
		5. 값 읽기	: get (* 배열의 []에 해당)
		6. 값 수정	: set
 */

public class C1404개념02_콜렉션 {
	public static void main(String[] args) {
		
		Vector<Integer> v = new Vector<Integer>();
		// 여기에 <int>를 쓸 수 없다. 
		//Vector<int> v2; //이게 안됨 
		
		// v[0] = 10;
		v.add(10);
//		v.add("문자");
//		v.add(3.14);
//		v.add(true);
		System.out.println(v);
		
		
		
//		int[] vector = new int[무한대];
//		Integer[] vector = new Integer[무한대];
		
		Vector<Integer> vector1 = new Vector<>();				// <> 안에 자료형을 생략하수있으나 추천하지 않는다.
		Vector<Integer> vector2 = new Vector<Integer>();		// 좀 더 명확하다.
		
		
		Vector<Integer> vector = new Vector<Integer>();
		
		// 1. 추가하기
		vector.add(10);
		vector.add(20);
		vector.add(30);
		System.out.println(vector.get(0));		// vector[0]
		System.out.println(vector.get(1));		// vector[1]
		System.out.println(vector.get(2));		// vector[2]
		
		// 2. 길이 구하기
		System.out.println("vecotr의 개수 = " + vector.size());
		
		// 3. 인덱스로 값 삭제하기
		vector.remove(0);
		System.out.println(vector);
		
		// 5. 값 가져오기
		int value = vector.get(0);
		System.out.println(value);
		System.out.println(vector.get(0));
		
		// 6. 수정하기
		// 벡터는 배열과 달리 읽기와 쓰기가 구분되어 있다.
		// (1) 배열
		int[] arr = {10, 20, 30};
		arr[0] = 100;
		arr[0] = 200;
		// (2) 벡터
//		vector.get(0) = 100;		// 이와 같은 문법은 사용할 수 없다.
		vector.set(0, 100);			// set을 통해 수정이 가능하다.
		
		// 7. 전체 출력하기
		for(int i=0; i<vector.size(); i++) {
			System.out.print(vector.get(i) + " ");
		}
		System.out.println();
		
		// 8. 전부 삭제하기
		vector.clear();
		System.out.println("vecotr의 개수 = " + vector.size());
		
	}
}

  • 기존의 배열 2가지 방법 - 추가삭제를 구현할려면  
    • 1. 배열 => 1000 정도 미리 만들어서 인덱스로 그 안에서 사용방법. 
    • 2. 가변 배열 => 새로 만들고 복사하고 , 
      • Vector 같은거다. 
      • 다른것도 저번에 배운것 

  • C1404개념03_컨트롤러
package C1404콜렉션벡터_개념;

import java.util.Scanner;
import java.util.Vector;

public class C1404개념03_컨트롤러 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		Vector<Integer> vector = new Vector<Integer>();
		
		while(true) {
			
			for(int i=0; i<vector.size(); i++) {
				System.out.print(vector.get(i) + " ");
			}
			System.out.println();
			
			System.out.println(">>> 벡터 컨트롤러 <<<");
			System.out.println("[1]추가");
			System.out.println("[2]삭제");
			System.out.println("[3]수정");
			System.out.println("[0]종료");
			
			int sel = scan.nextInt();
			
			if(sel == 0) {
				break;
			} else if(sel == 1) {
				System.out.print("[추가]값 입력 : ");
				int num = scan.nextInt();
				
				vector.add(num);
			} else if(sel == 2) {
				System.out.print("[삭제]값 입력 : ");
				int num = scan.nextInt();
				
				boolean check = false;
				for(int i=0; i<vector.size(); i++) {
					if(num == vector.get(i)) {
						vector.remove(i);
						check = true;
						break;
					}
				}
				
				if(check == false) {
					System.out.println("해당 값은 존재하지 않습니다.");
				}
			} else if(sel == 3) {
				System.out.print("[수정]값 입력 : ");
				int num = scan.nextInt();
				
				int index = -1;
				for(int i=0; i<vector.size(); i++) {
					if(num == vector.get(i)) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("해당 값은 존재하지 않습니다.");
				} else {
					System.out.print("[교체]값 입력 : ");
					int change = scan.nextInt();
					
					vector.set(index, change);
				}
				
			}
		}
		
	}
}

  • C1404개념04_선언방법
package C1404콜렉션벡터_개념;

import java.util.Scanner;
import java.util.Vector;

public class C1404개념04_선언방법 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);		
	
		Vector<Integer> vector1 = new Vector<>();		// 이렇게 <> 안에 자료형을 생략할 수 있으나 추천하지않음
		
		Vector<Integer> vector2 = new Vector<Integer>();// 이렇게 하는것이 좀 더 명확하다.
		
	}
}

  • C1404개념05_연속삭제
package C1404콜렉션벡터_개념;

import java.util.Random;
import java.util.Vector;

public class C1404개념05_연속삭제 {
	public static void main(String[] args) {
		
		Random ran = new Random();
		
		int[] arr = {1, 1, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4};	
		
		Vector<Integer> vector = new Vector<Integer>();
		for(int i=0; i<arr.length; i++) {
			vector.add(arr[i]);
		}
		System.out.println(vector);
		
		// [문제] vector의 숫자3을 삭제하시오.
//		for(int i=0; i<vector.size(); i++) {
//			if(vector.get(i) == 3) {
//				vector.remove(i);
//			}
//		}
//		System.out.println(vector);
		
		// 숫자 3이 전부 지워지지 않았다!
		// 이는 vector의 크기가 변해서 인덱스가 바뀌기 때문이다.
		// 이를 위해 i를 1씩 감소시켜줌으로써 문제를 해결할 수 있다.
		for(int i=0; i<vector.size(); i++) {
			if(vector.get(i) == 3) {
				vector.remove(i);
				i -= 1; //삭제를 하면 -1를 해주어야 한다. 
				//왜냐하면 vector.size의 길이가 줄어들기 때문에. 
			}
		}
		System.out.println(vector);
		
	}
}

  •  
반응형

'코딩 > 2-JAVA' 카테고리의 다른 글

C17스태틱  (2) 2025.07.11
C16캡슐화  (5) 2025.07.10
C14콜렉션 => C1401가변배열_개념  (0) 2025.07.07
C13파일입출력  (1) 2025.07.07
C1203메서드클래스배열_개념 ~ C1208메서드클래스배열_암기5  (0) 2025.07.04