코딩/2-JAVA

C0911어레이리스트

tree0505 2025. 6. 27. 11:30
반응형
  • C0911어레이리스트

  • C0911개념01어레이리스트
    • 실제로 대부분의 웹에서는 ArrayList 사용한다.
      • 그러면 그간의 배열로는 왜 했나?
      • 최적화 할때는 배열을 쓸 수 밖에 없다.
      • 어레이리스트의 함수중 add함수가. 딜레이를 준다.
      • 메모리. 그때 그때 늘리는것
      • new를 계속 하는것 
    • 일방적인 웹에서는 어레이리스를 많이 쓴다. 
      • 편하니까.
      • 최적화는 아니다. 
    • 그냥 배열은 한번 로딩하고 더 이상 로딩하지 않는다. 
    • 어레이리스트는 new를 할때마다 로딩 
    • 자바는 애초에 무거운것을 잘 안 만든다.
      • 자바가 애초에 무거워서 
package C0911어레이리스트;

import java.util.ArrayList; //임포트 해야된다. 

/*
	# 어레이리스트 	 			 	
 	[1] 기본 배열은 max 값을 정해놓고 그이상은 저장할수가 없었다. 
 	[2] 어레이리스트는 가변배열로 무한대로 저장이 가능하다. 
	
	# 사용법 
 	[1-1] 랜덤과 마찬가지로 임포트 해야한다. 
 	[1-2] import java.util.ArrayList;
 	
 	[2-1] 변수 선언의 모습이 특이하다. <> 를 이용한다. 
 	[2-2] ArrayList<String> list = new ArrayList<String>();
	
*/

public class C0911개념01어레이리스트 {
	public static void main(String[] args) {
		
//		int[] arr = {10, "문자", true, 3.14};
		//------------------------------------------
		//배열을 치면 이것과 같다. 
			//String[] arr = new String[4]; //배열 잡을때만 로딩하는것 
			//arr[0] = "a"; 
			//// 1. 값 추가하기 : add() => 같다. 
		//------------------------------------------
		ArrayList<String> list = new ArrayList<String>();
		//배열 생김 
		//임포트 해야한다. 
		//가변배열 
		//자바스크립트의 push이다. 
		//배열과 같다. 
		//다만 String만 담을 수 있다. 
		
		//실제로 대부분의 웹에서는 ArrayList 사용한다. 
			//그러면 그간의 배열로는 왜 했나? 
			//최적화 할때는 배열을 쓸 수 밖에 없다. 
			//어레이리스트의 함수중 add함수가. 딜레이를 준다. 
			//메모리. 그때 그때 늘리는것 
			//new를 계속 하는것 
		
		
		// 1. 값 추가하기 : add()
			//함수 add가 있다. 
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		
		// 2. 출력
		System.out.println(list);
		
		// 3. 길이 : size()
		System.out.println(list.size());
		//자바스크립트에서는 length 이다. 
		
		// 4. 값 추출 : get(index)
		System.out.println(list.get(0));	
			//값을 쓸때는 .get()이다. 
			// arr[0] 와 같다.
		for(int i=0; i<list.size(); i++) {
			System.out.print(list.get(i) + " ");
		}	//get으로 출력하는거다. 
			//arr[i]와 같은거다. 
		System.out.println();
		
		// 5. 값 수정 : set(인덱스, 변경할 값)
		// arr[0] = 100;
		list.set(1, "z"); //1번을 z로 바꿔라. 
		//수정은 set 함수가 있다. 
		// set (인덱스, 값) 
		// 기존의 배열과 같은 것은 . arr[1] = "z";
			//값 새로 넣는것과 같다. 
		for(int i=0; i<list.size(); i++) {
			System.out.print(list.get(i) + " ");
		}
		System.out.println();
		
		// 6. 값 삭제 : remove(인덱스)
		list.remove(1); //삭제 함수 
		for(int i=0; i<list.size(); i++) {
			System.out.print(list.get(i) + " ");
		}
		
	}
}

  • C0911개념02어레이리스트
package C0911어레이리스트;

import java.util.ArrayList;

/*
	어레이리스트와 일반배열 둘을 비교해보자.
*/

public class C0911개념02어레이리스트 {
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<String>();
		
		String[] str = new String[100];
		//위의 2개가 같다. 
		
		int count = 0;
		
		//------------------------------------
		
		//[1] 추가 
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		
		str[count] = "aaa";
		count += 1;
		str[count] = "bbb";
		count += 1;
		str[count] = "ccc";
		count += 1;
		str[count] = "ddd";
		count += 1;
		
		// add함수가. 밑의 있는것과 같다. 
		
		//------------------------------------
		
		//[2] 삭제
		// bbb를 삭제해보자.
		int removeIndex = 1;
		list.remove(removeIndex);
		
		for(int i = removeIndex; i < count - 1; i++) {
			str[i] = str[i + 1];
		}
		str[count] = "";
		count -= 1;
		
		//삭제가 위의 것이 같다. 
		//------------------------------------
		
		//[3] 수정
		// ccc 를 kkk 로변경 ; // 위에서 삭제했으므로 aaa , ccc , ddd 3개만있다. 
		int updateIndex = 1;
		String updateValue = "kkk";
		list.set(updateIndex , updateValue );
				
		str[updateIndex] = updateValue;
		
		//수정 위의 2개와 같다. 
		//------------------------------------
		//[4] 출력 
		for(int i = 0; i < list.size(); i++) {
			String temp = list.get(i);
			System.out.println(temp);
		}
		System.out.println("-------------------");
		for(int i = 0; i < count; i++) {
			String temp = str[i];
			System.out.println(temp);
		}
		
	}
}

  • C0911개념03어레이리스트
package C0911어레이리스트;

import java.util.ArrayList;

/*
	어레이리스트(정수형)	 	
	[1] 어레이리스트에서는 기존의 int는 사용할 수 없다.
	[2] Integer로 변수를 선언해야한다. 
	[3] 선언만 Integer로 하고 나머지는 똑같다. 
*/

public class C0911개념03어레이리스트 {
	public static void main(String[] args) {
		
		// int는 사용할 수 없고 Integer로 바꿔줘야한다. 
		// ArrayList<int> list = new ArrayList<int>();
		ArrayList<Integer> list = new ArrayList<Integer>();
		//ArrayList<Integer> 
			//꺽쇠에 자료형을 넣어 줘야 한다. 
			//완전 자유는 아니다. 자바스크립트처럼 
			//int는 Integer라고 해야한다. 
			//꺽쇠 안에 String(문자열). Integer(정수) 
				
		//추가 
		list.add(10);
		list.add(20);
		list.add(30);
		list.add(40);
		
		//삭제
		list.remove(1);  // 20이 삭제된것이다.
		
		//수정
		list.set(2, 100); 
		// 인덱스2면 10,30,40 에서 40을 뜻한다. 
		// 40이 100으로 바뀐것이다. 
		
		System.out.println("------------------");
		//출력 
		for(int i = 0; i < list.size(); i++) {
			int temp = list.get(i);  
			System.out.println(temp);
		}
		System.out.println("------------------");
		
	}
}

  • C0911개념04어레이리스트
    • 컨트롤러 만든것 
    • 기존의 배열을 가지고 만들었다면.
    • 어레이리스트로 만들어 본것 
package C0911어레이리스트;

import java.util.ArrayList;
import java.util.Scanner;

public class C0911개념04어레이리스트 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);	
		
		ArrayList<Integer> numberList = new ArrayList<Integer>();

		while(true) {
			System.out.println(numberList);
			System.out.println();
			
			System.out.println("[컨트롤러]");
			System.out.println("[1] 추가 [2] 삭제 [3] 검색 [4] 출력 [5] 수정 [0] 종료");
			
			int sel = scan.nextInt();
			if(sel == 0) {
				break;
			}else if(sel == 1) {
				System.out.print("[추가]값 입력 : ");
				int value = scan.nextInt();
				
				// 중복검사
				boolean check = false;
				for(int i=0; i<numberList.size(); i++) {
					if(value == numberList.get(i)) {
						check = true;
						break;
					}
				}
				
				if(check == false) {
					numberList.add(value);
				} else {
					System.out.println("중복되는 값입니다.");
				}
			}else if(sel == 2) {
				System.out.print("[삭제]값 입력 : ");
				int value = scan.nextInt();
				
				// 값 유효성 검사
				int check = -1;
				for(int i=0; i<numberList.size(); i++) {
					if(value == numberList.get(i)) {
						check = i;
						break;
					}
				}
				
				if(check == -1) {
					System.out.println("삭제할 수 없는 값입니다.");
				} else {
					numberList.remove(check);
				}
				
			}else if(sel == 3) {
				System.out.print("[검색]값 입력 : ");
				int value = scan.nextInt();
				
				// 값 유효성 검사
				int check = -1;
				for(int i=0; i<numberList.size(); i++) {
					if(value == numberList.get(i)) {
						check = i;
						break;
					}
				}
				
				if(check == -1) {
					System.out.println("값 입력 오류입니다.");
				} else {
					System.out.println("입력하신 값은 " + check + "번째 위치하고 있습니다.");
				}
				
			}else if(sel == 4) {
				for(int i=0; i<numberList.size(); i++) {
					System.out.println(numberList.get(i) + " ");
				}
			}else if(sel == 5) {
				System.out.print("[수정]값 입력 : ");
				int value = scan.nextInt();
				
				// 값 유효성 검사
				int check = -1;
				for(int i=0; i<numberList.size(); i++) {
					if(value == numberList.get(i)) {
						check = i;
						break;
					}
				}
				
				if(check == -1) {
					System.out.println("값 입력 오류입니다.");
				} else {
					System.out.print("[수정]변경할 값 입력 : ");
					int newValue = scan.nextInt();
					
					// 중복검사
					boolean result = false;
					for(int i=0; i<numberList.size(); i++) {
						if(numberList.get(i) == newValue) {
							result = true;
							break;
						}
					}
					
					if(result == false) {
						numberList.set(check, newValue);
					} else {
						System.out.println("값이 중복됩니다.");
					}
				}
			}
		}		
		
		scan.close();
		
	}
}

  • C0911개념05어레이리스트
    • 회원가입 
package C0911어레이리스트;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/*
	# ArrayList 2차원
		회원관리데이터 
		[1] 번호 [2] 아이디 [3] 비밀번호
		테스트를 위해 아래 기본데이터 4개를 넣고 시작한다.
*/

public class C0911개념05어레이리스트 {
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);	
		
		//               번호,   id,  pw
		int[] test1 = { 1001, 1234, 1111 };
		int[] test2 = { 1002, 2345, 2222 };
		int[] test3 = { 1003, 3456, 3333 };
		int[] test4 = { 1004, 4567, 4444 };
		
		ArrayList<int[]> memberList = new ArrayList<int[]>();
		//<int[]> => int배열은 이게 된다. 
		//int 한개는 Integer 인데. 정수
		//배열은 된다. 
		//총 3개가 들어 갈 수 있다.
			//<String> . 문자
			//<int[]> . 정수배열
			//<Integer> . 정수 

		int lastNumber = 1000;

		memberList.add(test1);
		lastNumber += 1;
		
		memberList.add(test2);
		lastNumber += 1;
		
		memberList.add(test3);
		lastNumber += 1;
		
		memberList.add(test4);	
		lastNumber += 1;
		
		while(true) {
			for(int i=0; i<memberList.size(); i++) {
				System.out.println(Arrays.toString(memberList.get(i)));
			}
			System.out.println();
			
			System.out.println("[회원관리]");
			System.out.println("[1] 추가 [2] 삭제 [3] 수정 [4] 검색 [5] 출력 [0] 종료");
			
			int sel = scan.nextInt();
			if(sel == 0) {
				break;
			}
			else if(sel == 1) {
				System.out.print("[추가]아이디 입력 : ");
				int id = scan.nextInt();
				
				// 아이디 중복검사
				int index = -1;
				for(int i = 0; i < memberList.size(); i++) {
					int[] temp = memberList.get(i);
					
					if(id == temp[1]) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.print("[추가]비밀번호를 입력 : ");
					int pw = scan.nextInt();
					
					int[] data = new int[3];
					
					lastNumber += 1;
					data[0] = lastNumber;
					data[1] = id;
					data[2] = pw;
					
					memberList.add(data);
				}else {
					System.out.println("중복아이디입니다. ");
				}	
			}	
			else if(sel == 2) {
				System.out.print("[삭제]아이디 입력 : ");
				int id = scan.nextInt();
				
				// 아이디 유효성검사
				int index = -1;
				for(int i = 0; i < memberList.size(); i++) {
					int[] temp = memberList.get(i);
					
					if(id == temp[1]) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("아이디를 확인해주세요.");
				} else {
					memberList.remove(index);
				}
			}
			else if(sel == 3) {
				System.out.print("[수정]아이디 입력 : ");
				int id = scan.nextInt();
				
				// 아이디 유효성검사
				int index = -1;
				for(int i = 0; i < memberList.size(); i++) {
					int[] temp = memberList.get(i);
					
					if(id == temp[1]) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("아이디를 확인해주세요.");
				} else {
					System.out.print("[수정]변경할 비밀번호 입력 : ");
					int newPw = scan.nextInt();
					
					int[] data = memberList.get(index);
					data[2] = newPw;
					
//					memberList.set(index, data);
				}
			}
			else if(sel == 4) {
				System.out.print("[검색]아이디 입력 : ");
				int id = scan.nextInt();
				
				// 아이디 유효성검사
				int index = -1;
				for(int i = 0; i < memberList.size(); i++) {
					int[] temp = memberList.get(i);
					
					if(id == temp[1]) {
						index = i;
						break;
					}
				}
				
				if(index == -1) {
					System.out.println("아이디를 확인해주세요.");
				} else {
					int[] data = memberList.get(index);
					
					System.out.println("NO : " + data[0]);
					System.out.println("ID : " + data[1]);
					System.out.println("PW : " + data[2]);
				}
			}
			else if(sel == 5) {
				for(int i=0; i<memberList.size(); i++) {
					int[] temp = memberList.get(i);
					System.out.printf("No : %d\tID : %d\tPW : %d\n", temp[0], temp[1], temp[2]);
				}
				System.out.println();
			}
		}
		
		scan.close();
		
	}
}

 

반응형