package edu.exam06.lineararraylist10;

import java.util.Scanner;

//선형배열리스트
public class LinearArrayList {
	
	static Scanner sc = new Scanner(System.in);
	static Student[] stArr = new Student[10];		//바로 접근할 수 있게 static으로..
	static int stNum = 0;							//저장된 인원

	//추가
	public static void add(Student st) {
		if(stNum == stArr.length) {
			System.out.println("더 이상 저장 못함!");
			return;
		}
		stArr[stNum++] = st;
	}
	//삽입
	public static void insert(int idx, Student st) {
		if(idx>stNum) {
			System.out.println("이곳에는 삽입 불가");
			return;
		}
		if(stNum == stArr.length) {
			System.out.println("더 이상 추가 못함!");
			return;
		}
		//삽입위치 뒤의 모든 값들을 한 칸씩 뒤로
		for(int i=stNum-1;i>=idx;i--) {
			stArr[i+1] = stArr[i];
		}
			stArr[idx] = st;	// 현재 idx에 삽입한다.
			stNum++;			// 1명 증가 시킨다.
		
	}
	//삭제
	public static void delete(int idx) {
		if(idx>stNum) {
			System.out.println("이곳에는 삭제 불가");
			return;
		}
		
		if(idx == stNum-1) {
			stArr[idx] =null;
		}
		else {
		
		for(int i=idx;i<stNum-1;i++) {
			stArr[i] = stArr[i+1];		
		}			
		stNum--;			
		}
	}
	//수정
	public static void update(int idx, Student st) {
		
		stArr[idx]= st;
		
	}
	//검색
	//keyword : 인덱스, 학번
	public static void search(String keyword, int value) {
		if(keyword=="index") {	//키워드가 인덱스 일때
			
			for(int i =0;i<stNum;i++) {
				//출력
				if(i==value) {
				stArr[i].infoStudent();
				}
			}
		}
		else if(keyword=="num") {		//키워드가 학번 일때
			for(int i =0;i<stNum;i++) {
				//출력
				if(stArr[i].stuNum==value) {
				stArr[i].infoStudent();}
			}
		}
	}
	public static void search(String stName) {	//이름으로 검색
		for(int i =0;i<stNum;i++) {
			if(stArr[i].stName.equals(stName)) {
				stArr[i].infoStudent();
			}		
		}		
	}
	public static void search(Student st) {
		for(int i =0;i<stNum;i++) {
			if(stArr[i].stuNum==st.stuNum && stArr[i].stName.equals(st.stName) ) {
				stArr[i].infoStudent();
			}			
		}		
	}	
	//전체출력
	public static void showAll() {
	
		for(int i=0;i<stNum;i++) {
			System.out.println("===================");		
			stArr[i].infoStudent();
		}		
	}	
	public static void main(String[] args) {
		//학생추가
		add(new Student(1111, "홍길동"));
		add(new Student(2222, "임꺽정"));			
		add(new Student(3333, "장길산"));	
		
	//	showAll();
		//학생 삽입
		insert(1, new Student(444, "홍경래"));
				
		update(1, new Student(5555, "김김") );
		
		//학생 전체보기
		System.out.println("1번 search로 찾기------");
		search("index", 0);
		
		System.out.println("2번 search로 찾기------");
		search("장길산");
		
		System.out.println("3번 search로 찾기------");
		search(new Student(3333, "장길산"));
		
		showAll();
	}
}

 

package edu.exam06.lineararraylist10;
//리스트에서는 이런 그룹을 Node or element 라 부름
public class Student {
	int stuNum;
	String stName;
	
	public Student(int stuNum, String stName) {
		this.stuNum = stuNum;
		this.stName = stName;
		
	}
	
	public void infoStudent() {
		System.out.println("학번: "+stuNum);
		System.out.println("이름: "+stName);
	}
}

+ Recent posts