Java. 객체에 id 번호(고유번호)를 넣어야 하는 이유

kimkim·2024년 10월 1일
0

Java. 공부내용정리

목록 보기
32/38

id번호(고유번호)란?

: 무언가를 식별하기 위해 부여되는 고유한 숫자이다.

객체에 고유번호를 넣는 이유

ArrayList에서 객체들을 객체를 꺼낼때 보통 인덱스를 이용해서 객체에 접근하고, 그 객체에 메서드나 변수에 접근하는 경우가 많다.

하지만 ArrayList가 수정되고 삭제되면서 원래 가지고 있는 인덱스의 번호가 변경된다.

이러한 상황이 반복되면 각 객체들이 원래 인덱스가 몇번인지 모르는 상황이 발생한다.

이를 방지하기 위해 각 객체에 고유번호를 심어줘야 인덱스 번호가 섞이더라도 원하는 객체를 선택할 수 있다.

예를 들어

고유번호 인덱스로 객체 확인하기

public class Id{
	public static void main(String[] arge){
		
        // 객체를 담는 ArrayList 생성
        ArrayListL<Post> postList = new ArrayList<>();
        
        // 1~100까지 for문으로 객체를 만들어서 ArrayList에 담았다.
        for(int i = 0; i <= 100; i++){
        	Post post = new Post("제목","내용");
        	postList.add(post);
        }
        
        // 만든 객체 48번째가 지금은 인덱스 47번에 있다는 것을 알지만
        postList.remove(4)
        postList.remove(8)
        postList.remove(7)
        // ... 이렇게 무작위로 객체를 삭제하게 되면 인덱스 47번에 있던 
        // 객체가 몇번째에 있는지 모르게 되어 
        // 원하는 특정 객체를 찾기 어려워 진다.
	}
}

class Post{
	private String title ;
    private String content;
    
    public Post(String title,String content){
    	this.title = title;
        this.content = content;
    }
}

이러한 인덱스의 불편한 점 때문에 객체에 고유번호인 id값을 넣어 고유속성을 가지고 원하는 post의 객체를 찾을 수 있다.

객체에 고유번호 넣기

public class Id{
	public static void main(String[] arge){
    	// 객체를 담는 ArrayLIst 생성
        ArrayList<Post> postList = new ArrayList<>();
        
        // 객체에 고유번호로 담을 변수
        int postId = 1;
        
        // 1~100까지 for문으로 객체를 만들어서 ArrayList에 담았다.
        for(int i = 0; i <= 100; i++){
        	Post post = new Post(1,"제목","내용");
        	postList.add(post);
            // 객체에 담기는 숫자는 매번 달라저야 하므로 증가식을 써서
            // 들어가는 고유번호가 달라지게 만들어준다.
            postId++;
        }
        
        // 예를들어 5번을 담고 있는 객체를 지우고 싶을 때
        for(int i = 0; i <= 100; i++){
        	if(postList.get(i).getid() == 5){
            	remove.(postList.get(i))
            }
        }
        // for문을 이용하여 일치하는 id를 찾고 그해당 post 객체를 지우면 된다.
        
        
        // 만약 for - each를 사용한다면
        for(Post post : postList){
        	if(post.getid() == 5){
            	remove.(post)
            }
        }
        // for문을 이용하여 일치하는 id를 찾고 그해당 post 객체를 지우면 된다.
	}
}

class Post{
	private int id;
    private String title;
    private String body
    
    public Post(int id, String title, String body){
    	// 생성자를 이용하여 매개변수로 받아 객체 id 변수에 담음
        this.id = id ;
        this.title = title;
        this.body = body;
    }
}

결론

객체 안에 고유 번호를 넣으므로써
인덱스 번호를 사용할때 수정되면서 섞이거나 놓치는 부분들을 방지 할수 있다.
자주 불러내는 클래스나 객체들은
클래스 안에 고유번호를 담을 수 있는 변수를 선언하고
객체에 고유번호를 담는 것이 좋다.

0개의 댓글