Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Everything has an expiration date

163 - Java 컬렉션(Collection) : 본문

[Java]/Program source (java)

163 - Java 컬렉션(Collection) :

Jelly-fish 2023. 9. 22. 10:49
/* ====================================
  ■■■ 컬렉션 (Collection) ■■■
======================================*/

// Test163 클래스를 완성하여 다음 기능을 가진 프로그램을 구현한다.

/*
실행 예)

	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 1

1번째 요소 입력 : 최혜인
1번째 요소 입력 성공~!!!
요소 입력 계속(Y/N)? : y

2번째 요소 입력 : 채다선
1번째 요소 입력 성공~!!!
요소 입력 계속(Y/N)? : n


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 2

[벡터 전체 출력]
최혜인
채다선
벡터 전체 출력 완료~!!!


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 3

검색할 요소 입력 : 채다선

[검색 결과 출력]
항목이 존재합니다.


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 3

검색할 요소 입력 : 정현욱

[검색 결과 출력]
항목이 존재하지 않습니다.


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 4

삭제할 요소를 입력 : 정한울

[삭제 결과 출력]
항목이 존재하지 않아 삭제할 수 없습니다.



	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 4

삭제할 요소 입력 : 최혜인

[삭제 결과 출력]
최혜인 항목이 삭제되었습니다.


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 5

변경할 요소 입력 : 임하성

[변경 결과 출력]
변경할 대상이 존재하지 않습니다.


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 5

변경할 요소 입력 : 채다선
수정할 내용 입력 : 이주형

[변경 결과 출력]
변경이 완료되었습니다.

	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 2

[벡터 전체 출력]
이주형
벡터 전체 출력 완료~!!!


	[ 메뉴 선택 ]==============
	1. 요소 추가
	2. 요소 출력
	3. 요소 검색
	4. 요소 삭제
	5. 요소 변경
	6. 종료
	===========================
>> 메뉴 선택 (1~6) : 6

프로그램 종료~!!!
계속하려면 아무 키나 누르세요...
*/

import java.util.Enumeration;
import java.util.Collections;
import java.util.Iterator;
import java.util.Vector;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

class Menus		// → 완성
{
	public static final int E_ADD = 1;		//-- 요소추가
	public static final int E_DISP = 2;		//-- 요소출력
	public static final int E_FIND = 3;		//-- 요소 검색
	public static final int E_DEL = 4;		//-- 요소 삭제
	public static final int E_CHA = 5;		//-- 요소 변경
	public static final int E_EXIT = 6;		//-- 종료
}


public class Test163
{
	// 주요 속성 구성 → 완료
	private static final Vector<Object> vt;	//-- 자료구조
	private static BufferedReader br;		//-- 입력 시 활용
	private static Integer sel;				//-- 선택 값
	private static String con;				//-- 계속 진행 여부

	// static 초기화 블럭 → 완성
	static
	{
		// Vector 자료구조 생성
		vt = new Vector<Object>();

		// BufferedReader 객체 생성
		br = new BufferedReader(new InputStreamReader(System.in));

		// 사용자 입력 값 초기화
		sel = 1;
		con = "Y";

	}

	// 메뉴 출력 메소드
	public static void menuDisp()
	{
		// 사용자에게 안내하기 위한 메세지만을 출력하는 기능
		// 메뉴를 선택하는 기능의 메소드(menuSelect())를 별도로 정의했기 때문에
		// 이 과정에서는 사용자이 선택값을 받아오지 않아도 무방함.
		
		System.out.println("\n\n\t[ 메뉴 선택 ]============");
		System.out.println("\t1. 요소 추가");
		System.out.println("\t2. 요소 출력");
		System.out.println("\t3. 요소 검색");
		System.out.println("\t4. 요소 삭제");
		System.out.println("\t5. 요소 변경");
		System.out.println("\t6. 종료");
		System.out.println("\t=========================");

		System.out.print("\t>> 메뉴 선택(1~6) : ");


	}

	// 메뉴 선택 메소드
	public static void menuSelect() throws IOException, NumberFormatException
	{
		// 선택한 메뉴에 따른 기능 분기는
		// menuRun() 에서 처리할 예정이기 때문에
		// 입력값을 받아오는 기능만 정의.
		sel = Integer.parseInt(br.readLine());
	}

	// 선택된 메뉴 실행에 따른 기능 호출 메소드
	public static void menuRun() throws IOException
	{
		// Menus 클래스를 활용하여 처리
		switch (sel)
		{
			case Menus.E_ADD  : addElement(); break;
			case Menus.E_DISP : dispElement(); break;
			case Menus.E_FIND : findElement(); break;
			case Menus.E_DEL  : delElement(); break;
			case Menus.E_CHA  : chaElement(); break;
			case Menus.E_EXIT : exit(); break;
			//★
			default: System.out.println("\t메뉴 선택 오류~!!!");
		
		}

	}

	// 자료구조에 요소 추가(입력) 메소드
	public static void addElement() throws IOException
	{

		do
		{
			System.out.printf("\n\t%d번째 요소 입력 : ", vt.size()+1);
			String element = br.readLine();
			//★
			boolean b = vt.add(element);
			if (b)
			{
				System.out.printf("\t%d번째 요소 입력 성공~!!!\n", vt.size());
			}

			System.out.print("\n\t요소 입력 계속(Y/N)? : ");
			//★
			con = br.readLine().toUpperCase();	// String 타입 메소드 사용. br.readLine()이 String이므로...
		}//★
		while (con.equals("Y"));

		
	}
	
	// 8
	// 반환타입 - Enumeration(구조가 Iterator랑 똑같다!)
	//- Enumeration<E> elements()	
    // 벡터의 모든 요소를 반환한다.
	
	// [Enumeration]        [Iterator]
	// hasMoreElements() → hasNext()와 하는 일 동일
	// nextElements() → next()가 하는 일과 동일
	// 자료구조 전체 요소 출력 메소드
	public static void dispElement()
	{
		System.out.println("\n\t[벡터 전체 출력]");
														//★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
														// 수식(증감식)이 필요 없기 때문에 비워둔 것이다.
														// 조건만 트루인지를 확인한다.
														// hasMoreElements() → true, false 이므로
														// 증감식 없이 처리 할 수있다.
														// ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
		for (Enumeration e = vt.elements(); e.hasMoreElements(); )
		{	//                                                 ---★
			
			System.out.printf("\t%10s\n", e.nextElement());
		}
		System.out.println("\t벡터 전체 출력 완료~!!!");
		
	}
		

	// 자료구조 내 요소 검색 메소드
	public static void findElement() throws IOException
	{
		System.out.print("\n\t검색할 요소 입력 : ");
		String element = br.readLine();

		System.out.println("\n\t[검색 결과 출력]");
		if (vt.contains(element))
		{
			System.out.println("\t항목이 존재합니다.");

			// ★ 추가 확인 - 존재한다면 인덱스 값을 출력해 주도록 하는 기능을 추가.
			int i = vt.indexOf(element);
			System.out.println("\t(" + element + " 위치 : " + i + ")"); 
		}
		else
		{
			System.out.println("\t항목이 존재하지 않습니다.");
		}
		
	}
		

	// 자료구조 내 요소 삭제 메소드
	public static void delElement() throws IOException
	{
		System.out.print("\n\t삭제할 요소 입력 : ");
		String element = br.readLine();

		System.out.println("\n\t[삭제 결과 출력]");
		if (vt.contains(element))
		{
			int i = vt.indexOf(element);
			vt.remove(i);

			System.out.println("\t" + element + " 항목이 삭제되었습니다.");
		}
		else
		{
			System.out.println("\t항목이 존재하지 않아 삭제할 수 없습니다.");
		}


	}
	


	// 자료구조 내 요소 수정(변경) 메소드
	public static void chaElement() throws IOException
	{
		System.out.print("\n\t변경할 요소 입력 : ");
		String oldElement = br.readLine();

		//System.out.println("\n\t[변경 결과 출력]");
		
		if (vt.contains(oldElement))
		{
			int i = vt.indexOf(oldElement);

			System.out.print("\n\t수정할 요소 입력 : ");
			String newElement = br.readLine();
			
			vt.set(i, newElement);

			System.out.println("\n\t[변경 결과 출력]");
			System.out.println("\t변경이 완료되었습니다.");
		}


		else
		{
			System.out.println("\n\t변경할 대상이 없습니다.");
		}

	}


	// 프로그램 종료 메소드
	public static void exit()
	{
		System.out.println("\n프로그램 종료~!!!");
		System.exit(-1);
	}

	
	// main() 메소드 → 완성
	public static void main(String[] args) throws IOException, NumberFormatException
	{
		do
		{
			menuDisp();
			menuSelect();
			menuRun();
		}
		while (true);
	
	}
}


/*
import java.util.Collections;
import java.util.Iterator;
import java.util.Vector;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

class Menus		// → 완성
{
	public static final int E_ADD = 1;		//-- 요소추가
	public static final int E_DISP = 2;		//-- 요소출력
	public static final int E_FIND = 3;		//-- 요소 검색
	public static final int E_DEL = 4;		//-- 요소 삭제
	public static final int E_CHA = 5;		//-- 요소 변경
	public static final int E_EXIT = 6;		//-- 종료
}


public class Test163
{
	// 주요 속성 구성 → 완료
	private static final Vector<Object> vt;	//-- 자료구조
	private static BufferedReader br;		//-- 입력 시 활용
	private static Integer sel;				//-- 선택 값
	private static String con;				//-- 계속 진행 여부

	// static 초기화 블럭 → 완성
	static
	{
		// Vector 자료구조 생성
		vt = new Vector<Object>();

		// BufferedReader 객체 생성
		br = new BufferedReader(new InputStreamReader(System.in));

		// 사용자 입력 값 초기화
		sel = 1;
		con = "Y";

	}

	// 메뉴 출력 메소드
	public static void menuDisp()
	{
		System.out.println("\n\n[ 메뉴 선택 ]==============");
		System.out.print("1. 요소 추가 \n2. 요소 출력\n3. 요소 검색\n");
		System.out.print("4. 요소 삭제 \n5. 요소 변경 \n6. 종료\n");
		System.out.print("===========================\n");
		System.out.print(">> 메뉴 선택 (1~6) :");
	}

	// 메뉴 선택 메소드
	public static void menuSelect() throws IOException, NumberFormatException
	{
		// 2. 사용자에게 숫자를 입력 받는다 (sel의 값.)
		
		try
		{
			sel = Integer.parseInt(br.readLine());
		}
		catch (NumberFormatException e)
		{
			System.out.println("숫자를 입력해 주십시오.");
			sel = 0;

		}
	
	}

	// 선택된 메뉴 실행에 따른 기능 호출 메소드
	public static void menuRun() throws IOException
	{
		switch (sel)
		{
			case Menus.E_ADD  : addElement(); break; 
			case Menus.E_DISP : dispElement(); break; 
			case Menus.E_FIND : findElement(); break; 
			case Menus.E_DEL  : delElement(); break; 
			case Menus.E_CHA  : chaElement(); break; 
			case Menus.E_EXIT : exit(); break; 
		
		}
	}
	
	// 자료구조에 요소 추가(입력) 메소드
	public static void addElement() throws IOException
	{
		
		1번째 요소 입력 : 최혜인
		1번째 요소 입력 성공~!!!
		요소 입력 계속(Y/N)? : y

		2번째 요소 입력 : 채다선
		1번째 요소 입력 성공~!!!
		요소 입력 계속(Y/N)? : n

	
		int cnt = vt.size() + 1;
		while (con.equals("y") || con.equals("Y"))
		{
			System.out.printf("\n%d번째 요소 입력 : ", cnt);
			vt.add(br.readLine());
			System.out.printf("%d번째 요소 입력 성공~!!!", cnt);
			System.out.print("\n요소 입력 계속(Y/N)? : ");
			con = br.readLine();

			if (con.equals("y") || con.equals("Y"))
			{
				cnt++;
			}
		}

		con = "Y";
		
		


	}

	// 자료구조 전체 요소 출력 메소드
	public static void dispElement()
	{
		
		[벡터 전체 출력]
		최혜인
		채다선
		벡터 전체 출력 완료~!!!
		
		
		Iterator it = vt.iterator();
		String str;
											
		System.out.println("\n\n[벡터 전체 출력]");
		
		while (it.hasNext())				
		{
			str = (String)it.next();		
			System.out.println(str);	
		}

		
		
	}

	// 자료구조 내 요소 검색 메소드
	public static void findElement() throws IOException
	{
		
	
		검색할 요소 입력 : 채다선

		[검색 결과 출력]
		항목이 존재합니다.

		검색할 요소 입력 : 정현욱

		[검색 결과 출력]
		항목이 존재하지 않습니다.
		
		String searchStr;
		System.out.print("\n검색할 요소 입력 : ");
		searchStr = br.readLine();

		//Collections.sort(vt);
		//int isExist = Collections.binarySearch(vt, searchStr);
		
		int isExist = vt.indexOf(searchStr);

		System.out.println("\n[검색 결과 출력]");

		if (isExist < 0)
		{
			System.out.println("항목이 존재하지 않습니다.");
		}

		else
		{
			System.out.println("항목이 존재합니다.");
		}


	}

	// 자료구조 내 요소 삭제 메소드
	public static void delElement() throws IOException
	{
		
		삭제할 요소를 입력 : 정한울

		[삭제 결과 출력]
		항목이 존재하지 않아 삭제할 수 없습니다.


		삭제할 요소 입력 : 최혜인

		[삭제 결과 출력]
		최혜인 항목이 삭제되었습니다.
		
		
		System.out.print("삭제할 요소를 입력 : ");
		
		String delStr = br.readLine();
		int isExist = vt.indexOf(delStr);
		
		System.out.println("\n[삭제 결과 출력]");
		if (isExist < 0)
		{
			System.out.println("항목이 존재하지 않아 삭제할 수 없습니다.\n");
		}
		else
		{
			vt.remove(delStr);
			System.out.printf("%s 항목이 삭제되었습니다.", delStr);
		}
		


	}
	
	// 자료구조 내 요소 수정(변경) 메소드
	public static void chaElement() throws IOException
	{
		/*
		변경할 요소 입력 : 임하성

		[변경 결과 출력]
		변경할 대상이 존재하지 않습니다.

		변경할 요소 입력 : 채다선
		수정할 내용 입력 : 이주형

		[변경 결과 출력]
		변경이 완료되었습니다.
		

		System.out.print("변경할 요소 입력 : ");
		String changeStr = br.readLine();
		String modifyStr;
		int changeIdx;
		int isExist = vt.indexOf(changeStr);

		System.out.println("\n[변경 결과 출력]");

		if (isExist < 0)
		{
			System.out.println("변경할 대상이 존재하지 않습니다.");
		}

		else
		{
			System.out.print("수정할 내용 입력 : ");
			modifyStr = br.readLine(); 

			// 변경해야 할 대상의 인덱스 위치 알아내기.
			changeIdx = vt.indexOf(changeStr);
			
			// 변경해야 할 대상의 인덱스 위치에, 변경할 문자열 덮어쓰기.
			vt.set(changeIdx, modifyStr);

			System.out.println("변경이 완료되었습니다.");

		}
	}

	// 프로그램 종료 메소드
	public static void exit()
	{
		System.out.println("\n프로그램 종료~!!!");
		System.exit(-1);
	}

	
	// main() 메소드 → 완성
	public static void main(String[] args) throws IOException, NumberFormatException
	{
		do
		{
			menuDisp();
			menuSelect();
			menuRun();
		}
		while (true);
	
	}
}

*/