티스토리 뷰

JAVA

[Java] 리스트 (List, ArrayList)

단미라이프 2022. 3. 15. 23:34
반응형

 

1. 리스트(List)

  • 리스트는 배열의 한계로 만들어진 자료형입니다.
    • 배열의 경우 크기가 정해져 있습니다.
  • 프로그래밍을 하다보면 크기를 알 수 없는 상황이 발생합니다. 이런 경우에 List를 사용하면 동적으로 자료형의 개수를 늘릴 수 있습니다.
import java.util.List;

 

 


 

 

 

2. ArrayList

  • ArrayList는 List 인터페이스를 상속 받은 클래스 중 하나입니다.
  • 배열과 동일하게 인덱스는 0부터 시작합니다.
  • 내부적으로 저장 가능한 메모리 용량(Capacity)이 있으며 그 이상을 저장하려고 할 때 새로운 메모리를 할당합니다.

ArrayList

 

ArrayList 생성
import java.util.ArrayList;
  • ArrayList를 사용하기 위해서는  import java.util.ArrayList; 와 같이 ArrayList를 먼저 import해야 합니다.

 

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

 

 

  • ArrayList 클래스의 주요 메소드
메소드 설명
boolean add(E element) ArrayList의 맨 뒤에 element 추가
void add(int index, E element) 인덱스 index위치에 elemnet 삽입
boolean addAll(Collection<? extends E> c) 컬렉션 c의 모든 요소를 ArrayList의 맨 뒤에 추가
void clear() ArrayList의 모든 요소 삭제
boolean contains(Object o) ArrayList가 지정된 객체를 포함하고 있으면 true 리턴
E elementAt(int index) index 인덱스의 요소 리턴
E get(int index) index 인덱스의 요소 리턴
int indexOf(Object o) o와 같은 첫번째 요소의 인덱스 리턴
없으면 -1 리턴
boolean isEmpty() ArrayList가 비어있으면 true 리턴
E remove(int index) index 인덱스의 요소 삭제
boolean remove(Object o) o와 같은 첫 번째 요소를 ArrayList에서 삭제
int size() ArrayList가 포함하는 요소의 개수 리턴
Object[] toArray() ArrayList의 모든 요소를 포함하는 배열 리턴

 

 

ArrayList에 요소 삽입(add())

 

import java.util.ArrayList;

public class Ex01 {

	public static void main(String[] args) {
		
		ArrayList<String> names = new ArrayList<String>();
		names.add("홍길동");
		names.add("홍길순");
		names.add("김영희");
		names.add("김철수");
		names.add("단미");
		
		System.out.println(names);
	}

}

 

  • add()는 리스트의 맨 끝에 값을 추가합니다.

  • 인덱스를 지정하면 해당 인덱스에 값이 추가되고 그 인덱스부터 한 자리씩 뒤로 밀려납니다.
import java.util.ArrayList;

public class Ex01 {

	public static void main(String[] args) {
		
		ArrayList<String> names = new ArrayList<String>();
		names.add("홍길동");
		names.add("홍길순");
		names.add("김영희");
		names.add("김철수");
		names.add("단미");
		names.add(0, "라이프");
		
		System.out.println(names);
	}

}

 

 

ArrayList 내의 요소 알아내기 (get() 이나 elementAt())

 

System.out.println(names.get(3));	//김영희 리턴

 

ArrayList에서 크기 알아내기(size())

 

System.out.println(names.size());	//사이즈 6 리턴

 

 

 

ArrayList에서 요소 삭제(remove())

 

names.remove(1);	//1번 요소 홍길동 삭제

 

  • ArrayList에 있는 모든 요소를 삭제하려면 clear()를 호출한다.
names.clar();

 

 

3. ArrayList 모든 요소 출력하기

 

ArrayList 내의 요소를 for문으로 출력

 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

public class Ex02 {

	public static void main(String[] args) {
		
        ArrayList<String> monsters = new ArrayList<>();
        monsters.add("피카츄");
        monsters.add("라이츄");
        monsters.add("파이리");
        monsters.add("꼬부기");
        
        // for 문
        for (int i = 0; i < monsters.size(); ++i) {
            System.out.print(monsters.get(i) + "  ");
        }
		
	}

}

 

 

 

ArrayList 내의 요소를 for-each문으로 출력

 

 

ArrayList 내의 요소를 iterator으로 출력
import java.util.ArrayList;
import java.util.Iterator;

public class Ex02 {

	public static void main(String[] args) {
		
        ArrayList<String> monsters = new ArrayList<>();
        monsters.add("피카츄");
        monsters.add("라이츄");
        monsters.add("파이리");
        monsters.add("꼬부기");

        // iterator
        Iterator<String> iterator = monsters.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next() + "  ");
        }

	}

}

 

ArrayList 내의 요소를 listIterator으로 출력

 

import java.util.ArrayList;
import java.util.ListIterator;

public class Ex02 {

	public static void main(String[] args) {
		
        ArrayList<String> monsters = new ArrayList<>();
        monsters.add("피카츄");
        monsters.add("라이츄");
        monsters.add("파이리");
        monsters.add("꼬부기");

        
        //  listIterator
        ListIterator<String> listIterator = monsters.listIterator();
        while (listIterator.hasNext()) {
			// 순방향으로 진행하면서 읽어온다.
            System.out.print(listIterator.next() + "  ");
        }
        System.out.println();
        
        while (listIterator.hasPrevious()) {
			// 역방향으로 진행하면서 읽어온다.
            System.out.print(listIterator.previous() + "  ");
        }        
		
	}

}

 

 

 

4. ArrayList 내의 값 검색

 

값이 존재하는지 유무(contains())

 

boolean contains =  monsters.contains("꼬부기");	//꼬부기가 존재하는지?
System.out.println(contains);

  • ArrayList 내에 값이 있다면 true가 리턴되고 없다면 false가 리턴됩니다.

 

 

값의 인덱스(indexOf())

 

int index = monsters.indexOf("꼬부기");	//꼬부기의 인덱스 확인
System.out.println(index);

  • 값이 존재하지 않을 경우 -1을 리턴합니다.

 

 

반응형

'JAVA' 카테고리의 다른 글

[Java] 클래스(class)의 개념  (1) 2022.03.22
[Java] 객체지향 프로그래밍(OOP)  (0) 2022.03.21
[Java] 배열  (2) 2022.03.14
[Java] 반복문(for문, while문, do-while문)  (0) 2022.03.12
[Java] 조건문(if문, if-else, switch-case)  (0) 2022.03.11
댓글
반응형
공지사항