[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세

		


	}
}