반응형
- 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 |