Java

자바(Java)의 ArrayList 라이브러리 사용하기

567Rabbit 2024. 6. 3. 17:37

ArrayList 라이브러리란?

 

기존의 Array(배열)은 정해진 데이터의 갯수 이상으로는 데이터 추가가 불가하다

갯수 제한 없이 데이터를 마음대로 추가, 수정, 삭제하기 위하여 만든 라이브러리 이다.

 

 


ArrayList 라이브러리 사용법(규칙)

 

담고싶은 데이터의 타입을 < > 안에 적어줘야 한다.


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

 

 

 

 

(1) 패키지 하나에 작성

 

- 사람의 이름을 저장할 수 있는 데이터 스트럭쳐 만들기

 

 

 

import java.util.ArrayList;   //ArrayList 라이브러리 임포트

public class ArrayListMain {

	public static void main(String[] args) {
		
		// 데이터 추가
		nameList.add("홍길동");
		nameList.add("김나나");
		nameList.add("Mike");
		
		// 데이터 억세스
		System.out.println(nameList.get(0));
		System.out.println(nameList.get(1));
		System.out.println(nameList.get(2));
		
		// 전체 데이터를 다 출력하시오.
		for(int i = 0 ; i < nameList.size() ; i++ ) { //nameList는 length 대신 size 쓴다
			System.out.println(nameList.get(i));
		}
		
		// for each 반복문
		for( String name : nameList) {  //nameList에 있는 것을 하나씩 빼서 저장한다
			System.out.println(name);
		}
		
		// 첫번째 데이터 홍길동을 김길동으로 변경 (수정)
		nameList.set(0,"김길동");
		System.out.println(nameList.get(0));
		
        
		// 데이터 1개 삭제하기
		// 인덱스로 삭제
		nameList.remove(0);
		// 값으로 삭제
		nameList.remove("Mike");
        
        
		// 모든 데이터 한꺼번에 삭제
		nameList.clear();
		
		// 데이터 비어있는지 아닌지 확인하는 함수
		if( nameList.isEmpty() ) {
			System.out.println("비어있다.");
		} else {
			System.out.println("데이터가 있다.");
		}
        
	}

}

 

 

 

 

 

(2) 패키지 여러개에 작성

 

- 주소록을 저장할 수 있는 데이터 스트럭쳐 만들기

 

 

 

 

Person 클래스 작성하기

package model;

public class Person {
	
	private String name;
	private String phone;
	
	public Person() { // 디폴트 생성자 생성
		
	}
	
	// Constructor 생성자 생성
	public Person(String name, String phone) {
		this.name = name;
		this.phone = phone;
	}

	// getter and setter
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	
	

}

 

 

 

 

ArrayListMain 클래스 작성하기

package main;

import java.util.ArrayList;

import model.Person;

public class ArrayListMain {

       public static void main(String[] args) {


              ArrayList<Person> personList = new ArrayList<>();


              Person p = new Person("홍길동","010-2222-3333");

              personList.add(p);
              

              p = new Person("김나나", "010-3333-4444");

              personList.add(p);
              

              p = new Person("Mike", "010-1111-1111");

              personList.add(p);
              

              // 주소록의 특정 인물 출력
              Person person = personList.get(1);

              System.out.println(person.getName());
              System.out.println(person.getPhone());


              // 주소록의 모든 사람의 이름과 전화번호 출력
              for (Person p1 : personList) {
                 System.out.println(p1.getName() + " : " + p1.getPhone());
              }

              for (int i = 0; i < personList.size(); i++) {
                 Person p1 = personList.get(i);
                 System.out.println(p1.getName() + " : " + p1.getPhone());
              }

              // 두번째 데이터인 김나나의 주소록 삭제
              personList.remove(1);

              // 홍길동의 전화번호 010-9999-8888로 변경
              Person p1 = personList.get(0);
              person.setPhone("010-9999-8888");

              // 모든 데이터 삭제
              personList.clear();
       }
}

 

 

 

* person, p, p1 처럼 변수 이름을 다양화 하는 이유는?

 

구분하기 위해서: person, p, p1 변수 이름을 사용하여 서로 다른 범위(scope)와 용도를 구분하려는 의도이다. 특히, 동일한 이름을 사용하면 변수의 의미와 사용 목적이 헷갈릴 수 있기 때문에 다른 이름을 부여하는 경우가 많다.

 

코드 블록 내의 임시 변수: 반복문이나 임시로 사용하는 변수는 짧은 이름을 사용하는 경우가 많다. 반복문 안에서 p1이라는 이름을 사용하여 반복문 내부의 변수임을 나타낸다.