본문 바로가기
Java/JAVA

Java - ArrayList CRUD, for-each 반복문

by 하니__ 2024. 6. 3.

 

자바의 기존 어레이(배열) 에서는

정해진 데이터의 갯수 이상으로는

데이터 추가가 불가능 했기에

 

어레이리스트 라이브러리가 만들어졌다

 

객체생성
ArrayList nameList = new ArrayList();

기존의 생성 방법에서는 이렇게 만들었지만

 

어레이리스트에는

사용할 데이터의 타입을  아래와 같이 적어줘야 한다

 

ArrayList<String> nameList = new ArrayList<String>();

 

 

데이터 추가 CRUD - Create
nameList.add("홍길동");
nameList.add("김나나");
nameList.add("씹던껌");
nameList.add("Andrew");

 

 

.add( )를 사용하여 추가한다

 

 

데이터 액세스 CRUD - Read
System.out.println(nameList.get(0));
System.out.println(nameList.get(1));
System.out.println(nameList.get(2));
System.out.println(nameList.get(3));

하나하나 가져오고 싶다면

리스트의 .get(인덱스번호)

를 사용하여 가져오면 되겠다

 

 

그렇다면 전체를 가져오려면?

 

for(int i = 0; i < nameList.size() ; i++) {
    System.out.println( nameList.get(i) );
}

 

for 반복문으로 가져오는데

이때는 Length가 아니라 Size로 해서 가져오면 되겠다

 

 

for - each 반복문
for( String name : nameList ) {
    System.out.println(name);
}

 

for ( 타입 변수 : 배열 ){

   수행할 작업

}

으로 작업하면 되겠다

 

데이터 수정 CRUD Update

 

 

nameList.set(0, "김길동");
System.out.println(nameList.get(0));

 

.set(인덱스번호, "바꿀내용")

으로 하면 되겠다

 

 

데이터 삭제 CRUD Delete

 

nameList.remove(1);
for( String name : nameList ) {
    System.out.println(name);
}
nameList.remove("김길동");
for( String name : nameList ) {
    System.out.println(name);
}

 

.remove()

 

를 사용하며 인덱스 번호를 넣거나

지우고 싶은 데이터를 넣으면 지울수 있다

 

 

nameList.removeAll(nameList);
nameList.clear();

 

모두 지우고 싶다면

.removeALL(변수명)

혹은

.clear()

 

를 사용하면 되겠다

 

데이터가 비어있는지 확인하는 함수

 

if (nameList.isEmpty()){
    System.out.println(" 비어있음 ");
}else {
    System.out.println("데이터가 있다");
}

if 조건문과

.isEmpty()

를 이용하여 비어있는지 아닌지를 확인이 가능하다

 

 

 

응용편

이름과 전화번호가 기록이 된 리스트

 

 

ArrayList<Person> PersonList = new ArrayList<Person>();
Person p = new Person("홍길동", "010-1234-5678");
PersonList.add(p);
p = new Person("김나나", "010-1111-2222");
PersonList.add(p);
p = new Person("Andrew", "010-3333-4444");
PersonList.add(p);

 

주소록의 모든 사람의 이름과 전호번호를 가져오자

 

위에서의 방법으로는

 

for(int i = 0; i < PersonList.size() ; i++) {
    System.out.println( PersonList.get(i) );

 

라고 생각하기 쉽다

 

하지만 이번엔 객체에 Name과 Phone이라는 속성으로 따로 저장이 되었기 때문에

for (int i = 0; i < PersonList.size(); i++) {
    Person person = PersonList.get(i);
    System.out.println(person.getName() + " : " + person.getPhone());
}
혹은
for ( Person Person : PersonList ) {
    System.out.println(Person.getName() + " : " + Person.getPhone());
}

 

이렇게 person 이라는 변수로 가져온 다음

그것의 이름과 전화번호를 하나 하나 따로 따로 가져오거나

for-each반복문을 사용하여 위와같이 이름과 전화번호를 따로가져와야한다

 

 

홍길동의 전화번호를 바꿔보자
Person person = PersonList.get(0);
person.setPhone("010-9999-8888");

 바꾸는것도 위와 동일하다

 

우선 .get을 통해 가져온 뒤 변수로 저장

그리고 그 가져온 변수를 .setPhone을 이용해 변경해주면 되겠다