[Java]/Program source (java)
★★★ 162 - Java 컬렉션(Collection) : MyData 클래스 타입의 벡터를 생성하여 벡터에 MyData 요소를 저장하고, getter setter를 통해 출력하는 프로그램
Jelly-fish
2023. 9. 21. 17:48
/* ====================================
■■■ 컬렉션 (Collection) ■■■
======================================*/
// ★☆★☆★☆★☆★☆★완 전 중 요 ★☆★☆★☆★☆★☆★
// ★☆★☆★☆★☆★☆★완 전 중 요 ★☆★☆★☆★☆★☆★
// ★☆★☆★☆★☆★☆★완 전 중 요 ★☆★☆★☆★☆★☆★
// ★☆★☆★☆★☆★☆★완 전 중 요 ★☆★☆★☆★☆★☆★
// 자료구조 객체 선언 및 생성 시
// 사용자 정의 클래스 활용
// → 자료형
import java.util.Vector;
// 클래스 → 사용자 정의 자료형으로 활용
class MyData
{
// 주요 속성 구성 → 주요 변수 선언(멤버 변수)
private String name; //-- 이름
private int age; //-- 나이
// getter → getXxx()
// setter → setXxx()
// getter / setter 구성
// 외부에게 값을 넘겨주는 것.
public String getName()
{
return name;
}
// 외부에서 값을 지정하는 것.
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
// 생성자 → 사용자 정의 생성자(매개변수 2개인 생성자)
public MyData(String name, int age)
{
this.name = name;
this.age = age;
}
// ※ 사용자 정의 생성자가 구성될 경우
// default 생성자가 자동으로 삽입되지 않기 때문에
// default 생성자 형태의 생성자를 사용자 정의 생성자로
// 추가 구성하게 되는 것이 일반적인 클래스 설계 과정
// (반드시 설계해야 한다는 문법적인 규칙은 없다.)
// 생성자 → 사용자 정의 생성자(매개변수 없는 생성자)
public MyData()
{
//this("", 0); //매개변수 두 개 받는 생성자
name = "";
age = 0;
}
/*
@Override
public String toString()
{
return name + " " + age;
}
*/
}
public class Test162
{
public static void main(String[] args)
{
// 벡터 자료구조 생성
//↓ MyData[] dataArr = new MyData[10]; 와 같은 구조이다.
Vector<MyData> v = new Vector<MyData>();
// MyData 형만 요소로 취하는 벡터(Vector)
MyData ob = new MyData();
// 벡터 자료구조 v 에
// 김수환 73세 / 김지민 7세 / 노은하 3세
String[] names = {"김수환", "김지민", "노은하"};
int[] ages = {73, 7, 3};
/*
for (int i = 0; i < 3; i++)
{
v.add(new MyData(names[i], ages[i]));
}
*/
/*
String[] resultStr = new String[3];
int[] resultInt = new Int[3];
for (int i = 0; i < 3; i++)
{
ob.setName(names[i]);
resultStr[i] = ob.getName();
ob.setAge(ages[i]);
resultInt[i] = ob.getAge();
}
v.add(new MyData(resultStr[0], 73));
for (MyData a : v)
{
System.out.print(a.toString() + " ");
}
System.out.println();
*/
// ①
/*
MyData st1 = new MyData();
st1.setName("김수환");
st1.setAge(73);
v.add(st1);
MyData st2 = new MyData();
st2.setName("김지민");
st2.setAge(7);
v.add(st2);
MyData st3 = new MyData();
st3.setName("노은하");
st3.setAge(3);
v.add(st3);
*/
// ②
/*
MyData st1 = new MyData("김수환", 73);
v.add(st1);
MyData st2 = new MyData("김지민", 7);
v.add(st2);
MyData st3 = new MyData("노은하", 3);
v.add(st3);
*/
// 벡터는 인덱스 없이 추가하고, 값을 가져올 때 get() 메소드로
// 순서대로 가져올 수 있다.
// ③
v.add(new MyData("김수환", 73));
v.add(new MyData("김지민", 7));
v.add(new MyData("노은하", 3));
// 벡터 자료구조 v 에 담긴 내용(요소) 전체 출력하기
// 실행 예)
// 이름:김수환, 나이:73세
// 이름:김지민, 나이:7세
// 이름:노은하, 나이:3세
/*
for(MyData a : v)
{
System.out.printf("이름: %s, 나이: %d\n", a.getName(), a.getAge());
}
for (int i = 0; i < 3; i++)
{
System.out.print("이름:" + v.get(i).getName() + ", ");
System.out.print("나이:" + v.get(i).getAge() + "\n");
}
*/
// ①
for (MyData obj : v)
{
System.out.printf("이름:%s, 나이:%d세\n", obj.getName(), obj.getAge());
}
System.out.println();
//--==>> 이름:김수환, 나이:73세
// 이름:김지민, 나이:7세
// 이름:노은하, 나이:3세
// ②
for (int i = 0; i < v.size(); i++)
{
System.out.printf("이름:%s, 나이:%d세\n", v.elementAt(i).getName(), v.elementAt(i).getAge());
}
System.out.println();
//--==>> 이름:김수환, 나이:73세
// 이름:김지민, 나이:7세
// 이름:노은하, 나이:3세
// ③
for (int i = 0; i < v.size(); i++)
{
System.out.printf("이름:%s, 나이:%d세\n", v.get(i).getName(), v.get(i).getAge());
}
System.out.println();
//--==>> 이름:김수환, 나이:73세
// 이름:김지민, 나이:7세
// 이름:노은하, 나이:3세
// ④
for (Object obj : v)
{
System.out.printf("이름:%s, 나이:%d세\n", ((MyData)obj).getName(), ((MyData)obj).getAge());
}
System.out.println();
//--==>> 이름:김수환, 나이:73세
// 이름:김지민, 나이:7세
// 이름:노은하, 나이:3세
}
}