본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/JAVA

[JAVA] 리스트 List ArrayList 사용 방법

by 미노드 2023. 5. 8.

리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다.

리스트와 배열의 가장 큰 차이는 배열은 크기가 정해져 있지만 리스트는 크기가 정해져 있지 않고 동적으로 변한다는 점이다.
선언할 때 크기를 정해서 선언할 필요가 없으므로 크기의 제한에서 자유롭다.

ArrayList

List 자료형은 ArrayList 뿐만아니라 여러가지가 있다.
여기선 ArrayList만 다루려 한다.

add

ArrayList에 값을  추가할 때 사용한다.

import java.util.ArrayList;
import java.util.List;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ListSample {	
	public static void main(String[] args) {
	    ListSample listSample = new ListSample();
	    log.info("getList {}", listSample.getList());
	}
	
	private List getList() {
	    List fruit = new ArrayList();
	    fruit.add("사과");
	    fruit.add(1);
	    fruit.add("복숭아");
	    
	    log.info("fruit(2) {}",fruit.get(2));
	    log.info("fruit {}",fruit);
	    
	    return fruit;
	}
	
}

ArrayList를 사용하기 위해서는 import java.util.ArrayList와 같이 ArrayList를 먼저 import해야 한다.

ArrayList 객체에 add 라는 메서드를 이용하여 값을 삽입 가능하다.

fruit.add(0, "24");    // 첫번째 위치에 24 삽입.

만약 2번 째 위치에 133을 삽일 할 경우에는 다음과 같이 하면 된다.

fruit.add(1, "포도");

자바는 J2SE 5.0 버전 이후부터 ArrayList<String> pitches = new ArrayList<>(); 처럼 객체를 포함하는 자료형도 어떤 객체를 포함하는지에 대해서 명확하게 표현할 것을 권고하고 있다.
위의 예제처럼 제네릭스(Generics) 없이 코딩하면 명확한 타입을 명시하라는 warning이 표시될 것이다.

get

원하는 위치의 값을 출력하고 싶다면 다음과 같이 한다.

fruit.get(2) // index 2의 위치, 3번째 위치에 있는 값이 출력된다.

size

size 메서드는 ArrayList의 요소 개수를 리턴한다.

System.out.println(fruit.size());
3

contains

contains 메서드는 리스트 안에 해당 항목이 있는지를 판별하여 그 결과를 boolean으로 리턴한다.

System.out.println(fruit.contains("사과"));
true

 

remove

remove 메서드에는 2가지 방식이 있다. (이름은 같지만 입력파라미터가 다르다)

  1. remove(객체)
  2. remove(인덱스)

첫번째 remove(객체)의 경우는 리스트에서 객체에 해당되는 항목을 삭제하고 삭제한 결과(true, false)를 리턴한다.

System.out.println(fruit.remove("자두"));
false

두 번째 remove(인덱스)의 경우는 해당 인덱스의 항목을 삭제하고 삭제된 항목을 리턴한다.

System.out.println(fruit.remove(0));
사과

다양한 방법으로 ArrayList 만들기

먼저 문자열 배열이 존재할 경우 Array를 기반으로  List를 만들 수 있다.
java.util.Arrays 클래스의 asList 메서드를 사용하면 이미 존재하는 문자열 배열로 ArrayList를 생성할 수 있다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ListSample {
	
	public static void main(String[] args) {
		ListSample listSample = new ListSample();
//		log.info("getList {}", listSample.getList());
		log.info("getList {}", listSample.getList2());
	}
	
	private List getList() {
		List fruit = new ArrayList();
	    fruit.add("사과");
	    fruit.add(1);
	    fruit.add("복숭아");
	    
	    log.info("fruit(2) {}",fruit.get(2));
	    log.info("fruit {}",fruit);
	    
	    return fruit;
	}
	
	private List<String> getList2() {
		String[] fruits= {"사과", "1", "복숭아"};
		List<String> fruit = new ArrayList<>(Arrays.asList(fruits));
	    fruit.add("2");
	    
	    log.info("fruit(2) {}",fruit.get(2));
	    log.info("fruit {}",fruit);
	    
	    return fruit;
	}
	
}
[귤, 3, 키위, 4]

또는 다음과 같이 String 배열 대신 String 자료형을 여러개 전달하여 생성할 수도 있다.

	String[] fruits= {"귤", "3", "키위"};
	List<String> fruit = new ArrayList<>(Arrays.asList(fruits));
	List<String> fruit = new ArrayList<>(Arrays.asList({"귤", "3", "키위"}));