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