• JAVA_ArrayList 특정 위치에 변수 추가. (객체지향 프로그래밍)

    2021. 8. 6.

    by. KAEY


      - 해당 코드를 참조만 하시고, 복사 붙여넣기를 통한 과제를 진행하시면 도움이 정말 하나도 안됩니다. 부디 직접해보시고, 다른 사람의 솔루션이 어떤 지 참조하시는 정도로만 사용해주세요.



    ArrayList의 특정 위치에 회원을 추가해 봅니다.

    회원을 추가할 때 맨 뒤가 아닌 특정 위치에 추가하는 메소드를 만들고
    MemberArrayListTest 클래스에 코드를 추가하여 테스트해보세요.


    MemberArrayList.java

    package java0806;
    import java.util.ArrayList; // 사용할 클래스 import
    //import java0806.Member; 
    
    public class MemberArrayList {
    	private ArrayList<Member> arrayList; // ArrayList 선언
    	
    	public MemberArrayList(){
    		arrayList = new ArrayList<Member>(); //멤버로 선언한 ArrayList 생성
    	}
    	public void addMember(Member member){ //ArrayList 에 멤버 추가
    		arrayList.add(member);
    	}
    	
    	public boolean removeMember(int memberId){ // 멤버 아이디를 매개변수로, 삭제 여부를 반환
    		for(int i =0; i<arrayList.size(); i++){ // 해당 아이디를 가진 멤버를 ArrayList에서 찾음
    			Member member = arrayList.get(i);
    			int tempId = member.getMemberId();
    			if(tempId == memberId){ // 멤버 아이디가 매개변수와 일치하면
    				arrayList.remove(i); // 해당 멤버를 삭제
    				return true; // true 반환
    			}
    		}
    		System.out.println(memberId + "가 존재하지 않습니다"); //for 가 끝날 때 까지 return 
            					//이 안된 경우
    		return false; 
    	}
    		
    	public void showAllMember(){//전체 회원을 출력
    		for(Member member : arrayList){
    			System.out.println(member);
    		}
    		System.out.println();
    	}
    }

    Member.java

    package java0806;
    
    public class Member {
    	private int memberId; //회원 아이디
    	private String memberName; //회원 이름
    	
    	public Member(int memberId, String memberName){ //생성자
    		this.memberId = memberId;
    		this.memberName = memberName;
    	}
    
    	public int getMemberId() {
    	return memberId;
    	}
    	
    	public void setMemberId(int memberId) {
    	this.memberId = memberId;
    	}
    	
    	public String getMemberName() {
    	return memberName;
    	}
    	
    	public void setMemberName(String memberName) {
    	this.memberName = memberName;
    	}
    	@Override
    	public String toString(){ //toString 메소드 오버라이딩
    		return memberName + " 회원님의 아이디는 " + memberId + "입니다";
    	}
    }

    MemberArrayListTest.java

    package java0806;
    import java.util.ArrayList;
    import java.util.Iterator;
    
    //import java0806.Member; 
    
    public class MemberArrayListTest {
    	public static void main(String[] args) {
    		MemberArrayList memberArrayList = new MemberArrayList();
    		
    		//회원 인스턴스 생성
    		Member memberLee = new Member(1001, "이지원");
    		Member memberSon = new Member(1002, "손민국");
    		Member memberPark = new Member(1003, "박서훤");
    		Member memberHong = new Member(1004, "홍길동");
    		
    		//ArrayList에 회원추가
    		memberArrayList.addMember(memberLee);
    		memberArrayList.addMember(memberSon);
    		memberArrayList.addMember(memberPark);
    		memberArrayList.addMember(memberHong);
    		}
    }

    해당 코드에서 원하는 위치(인덱스)에 객체를 넣기 위해서 arraylist.add(E e)를 사용

     

    	public void insertMember(Member member, int index) {
    		arrayList.add(index, member);
    	}

    MemberArrayList.java 클래스안에 해당 메소드를 추가하여 add 할 수 있도록 한다.

     

     

    	memberArrayList.insertMember(memberHong, 1);

    해당 코드를 MemberArrayListTest.java 클래스 안에 추가하여 메소드가 실행될 수 있도록 한다.

     

     

    		memberArrayList.addMember(memberLee);
    		memberArrayList.addMember(memberSon);
    		memberArrayList.addMember(memberPark);
    		memberArrayList.addMember(memberHong);
    		memberArrayList.showAllMember();
    		memberArrayList.insertMember(memberHong, 1);
    		memberArrayList.showAllMember();

     그 후, 객체들이 잘 저장됐는지 확인하기 위하여 앞서 생성해놓은 showAllMember()와 insertMember(E e)를 사용하여 확인한다. 해당 코드에서는 이, 손, 박, 홍이 각각 인덱스 0~3에 저장되고, 그 값들이 출력된 후 인덱스 1에 홍의 값이 추가되어 이, 홍, 손, 박, 홍이 생기게 될 것이다.

     

     

    실행 결과 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

    예상했던 결과가 출력되었다.

     

    만약에 index를 초과한 숫자를 입력할 때의 예외처리를 한다면? ㅡㅡㅡ

    	public void insertMember(Member member, int index) {
    		if(index < 0 || index > arrayList.size()) {
    			System.out.println(index + "는 존재하지 않습니다.");
    			return;
    		}
    		else
    			arrayList.add(index, member);
    	}

     

    댓글 (비로그인 댓글 허용하지 않습니다.)