Java

Java List 와 Vector

승모근뭉치 2023. 1. 30. 11:55

프로젝트 내 src 내 javabasic 패키지 내 Ex12List.java

package javabasic;

import java.util.List;
import java.util.Vector;

public class Ex12List {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<Person> list = new Vector<Person>();
		list.add(new Person("이효리", 1989, 167.3, 56.8));
		list.add(new Person("강호동", 1970, 189.2, 89.6));
		list.add(new Person("이영자", 1997, 160.2, 66.8));
		list.add(new Person("임영웅", 2001, 178.3, 65.8));
		System.out.println("총 " + list.size() + " 명의 데이타가 있습니다");
		System.out.println("출력 1");
		for (Person p : list) {
			System.out.println(p.getName() + "\t" + p.getYear() + "\t" + p.getHeight() + "\t" + p.getWeight() + "\t"
					+ p.getPungga());
		}
		System.out.println();
		System.out.println("출력 2");
		for (int i = 0; i < list.size(); i = i + 1) {
			Person p = list.get(i);
			System.out.println(i + 1 + "\t" + p.getName() + "\t" + p.getYear() + "\t" + p.getHeight() + "\t"
					+ p.getWeight() + "\t" + p.getPungga());
		}

	}

}
총 4 명의 데이타가 있습니다
출력 1
이효리	1989	167.3	56.8	정상
강호동	1970	189.2	89.6	비만
이영자	1997	160.2	66.8	비만
임영웅	2001	178.3	65.8	정상

출력 2
1	이효리	1989	167.3	56.8	정상
2	강호동	1970	189.2	89.6	비만
3	이영자	1997	160.2	66.8	비만
4	임영웅	2001	178.3	65.8	정상

 

========================================

 

위의 코드에 더해서 Vector로 선언하고 Vector로 생성한 인스턴스를 만들었다.

 

프로젝트 내 src 내 javabasic 패키지 내 Ex12List.java

 

package javabasic;

import java.util.List;
import java.util.Vector;

public class Ex12List {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<Person> list = new Vector<Person>();
//		System.out.println("list size : " + list.size());
		list.add(new Person("이효리", 1989, 167.3, 56.8));
		list.add(new Person("강호동", 1970, 189.2, 89.6));
		list.add(new Person("이영자", 1997, 160.2, 66.8));
		list.add(new Person("임영웅", 2001, 178.3, 65.8));
		System.out.println("총 " + list.size() + " 명의 데이타가 있습니다");
		System.out.println("출력 1");
		for (Person p : list) {
			System.out.println(p.getName() + "\t" + p.getYear() + "\t" + p.getHeight() + "\t" + p.getWeight() + "\t"
					+ p.getPungga());
		}
		System.out.println();
		System.out.println("출력 2");
		for (int i = 0; i < list.size(); i = i + 1) {
			Person p = list.get(i);
			System.out.println(i + 1 + "\t" + p.getName() + "\t" + p.getYear() + "\t" + p.getHeight() + "\t"
					+ p.getWeight() + "\t" + p.getPungga());
		}
		
		list.add(new Person("김말똥", 2010, 120.3, 40.3));
		list.add(new Person("고구미", 2020, 100.2, 30.2));
		list.add(new Person("동장군", 1980, 170.3, 70.5));
		list.add(new Person("나훈아", 1980, 170.3, 70.5));
		list.add(new Person("이순희", 1980, 170.3, 70.5));
		list.add(new Person("홍길동", 1980, 170.3, 70.5));
		list.add(new Person("유재순", 1980, 170.3, 70.5));
		list.add(new Person("허유라", 1980, 170.3, 70.5));
		System.out.println("list 에 8명을 추가했어요. 그 후 list 는 어떻게 변화했을까요~~?");
		System.out.println("list size : " + list.size());
		
		System.out.println();
		
		List<Person> list2 = new Vector<Person>(5);
		// List 라는 부모 클래스를 생성할 때는 Vector 라는 자식 클래스로 생성했기
		// 때문에 List 에 있는 기능을 구현한 Vector 의 기능만 쓸 수 있다.
		// Vector 에는 capacity() 메서드가 있으나 List 에는 없다.
		// 그래서 선언은 List 로 했으므로 capacity() 메서드는 없어서 쓸 수 없다.
		System.out.println("list2 size : " + list2.size());
		
		list2.add(new Person("강우동", 1999, 190.2, 90.3));
		list2.add(new Person("강주동", 1988, 170.2, 90.3));
		list2.add(new Person("김말순", 1959, 160.2, 90.3));
		list2.add(new Person("류현수", 1969, 190.2, 70.3));
		list2.add(new Person("임지숙", 1939, 140.2, 40.3));
		list2.add(new Person("송수라", 1979, 160.2, 70.3));
		System.out.println("list2 에 6명을 추가했어요.");
		System.out.println("list2 size : " + list2.size());
		
		for (Person p:list2) {
			System.out.println(p.getName());
		}
		
		System.out.println();
		Vector<Person> vector1 = new Vector<Person>();
		System.out.println("vector1 capacity : " + vector1.capacity());
		System.out.println("vector1 size : " + vector1.size());
		
		System.out.println();
		Vector<Person> vector2 = new Vector<Person>(3);
		System.out.println("vector2 capacity : " + vector2.capacity());
		System.out.println("vector2 size : " + vector2.size());
		vector2.add(new Person("강호동", 1955, 182.3, 100.2));
		vector2.add(new Person("김상호", 1998, 132.3, 60.2));
		vector2.add(new Person("구동례", 2010, 172.3, 70.2));
		System.out.println("3명으 정보를 기입했어요. 그 후 vector2는 어떻게 변화했을까요~~?");
		System.out.println("vector2 capacity : " + vector2.capacity());
		System.out.println("vector2 size : " + vector2.size());
		vector2.add(new Person("양상추", 2004, 200.1, 99.3));
		// Vector 는 capacity 가 부족할 경우 자동적으로 기존의 크기 보다 2배의 크기로
		// 증가된다. 그래서 capacity 가 기존의 3에서 6이 된다.
		System.out.println("1명의 정보를 추가했어요. 그 후 vector2는 어떻게 변화했을까요~~?");
		System.out.println("vector2 capacity : " + vector2.capacity());
		System.out.println("vector2 size : " + vector2.size());
		// Vector 와 ArrayList 같이 배열을 이용한 자료구조는 데이터를 읽어오고 저장하는 데는
		// 효율이 좋다고 한다.
		// 하지만 용량을 변경할 때 새로운 배열을 생성한 후 기존의 배열로부터 새로 생성된 배열로
		// 데이타를 복사해야 하므로 상당히 효율이 떨어진다는 단점을 가지고 있다고 한다.
		// 그래서 처음에 인스턴스를 생성 시 저장할 데이타의 갯수를 잘 생각해서 충본한 용량
		// 의 인스턴스를 생성하는 것이 좋다고 한다.
	}

}
총 4 명의 데이타가 있습니다
출력 1
이효리	1989	167.3	56.8	정상
강호동	1970	189.2	89.6	비만
이영자	1997	160.2	66.8	비만
임영웅	2001	178.3	65.8	정상

출력 2
1	이효리	1989	167.3	56.8	정상
2	강호동	1970	189.2	89.6	비만
3	이영자	1997	160.2	66.8	비만
4	임영웅	2001	178.3	65.8	정상
list 에 8명을 추가했어요. 그 후 list 는 어떻게 변화했을까요~~?
list size : 12

list2 size : 0
list2 에 6명을 추가했어요.
list2 size : 6
강우동
강주동
김말순
류현수
임지숙
송수라

vector1 capacity : 10
vector1 size : 0

vector2 capacity : 3
vector2 size : 0
3명으 정보를 기입했어요. 그 후 vector2는 어떻게 변화했을까요~~?
vector2 capacity : 3
vector2 size : 3
1명의 정보를 추가했어요. 그 후 vector2는 어떻게 변화했을까요~~?
vector2 capacity : 6
vector2 size : 4