: 무언가를 식별하기 위해 부여되는 고유한 숫자이다.
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;
}
}
객체 안에 고유 번호를 넣으므로써
인덱스 번호를 사용할때 수정되면서 섞이거나 놓치는 부분들을 방지 할수 있다.
자주 불러내는 클래스나 객체들은
클래스 안에 고유번호를 담을 수 있는 변수를 선언하고
객체에 고유번호를 담는 것이 좋다.