자바 리스트 클래스들은 List 와 ArrayList 가 있습니다. 리스트는 배열의 한계 때문에 만들어진 자료형입니다. 배열을 사용하기 위해서는 크기를 정해야 합니다. 그런데 프로그래밍 중에 동적으로 생성해야 하는 경우가 많기 때문에 크기를 미리 정할 수 없습니다. List 는 메모리가 허용하는 한 계속 해서 추가 할 수 있도록 만든 자료형 클래스 입니다.
▼ java.util.List 는 인터페이스 클래스이며, java.util.Collection 인터페이스를 구현한 것입니다. List 를 사용하기 위해서는 아래 클래스들 중 하나로 인스턴스화 할 수 있습니다.
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
import java.util.Vector;
List<String> listA = new ArrayList<String>();
List<String> listB = new LinkedList<String>();
List<String> listC = new Vector<String>();
List<String> listD = new Stack<String>();
◎ 값 추가하고 꺼내는 방법 – add, get |
▼ 리스트에서 값들을 추가하고 인덱스에 해당하는 값을 하나씩 가져오거나 모든 데이터를 꺼내는 방법을 알아봅니다. 값을 추가하기 위해서는 add() 함수를 사용해야 합니다. 아래 소스에서 add() 함수를 이용해 텍스트값 3개를 추가했습니다. 그리고 제일 아래에 있는 add() 함수는 형태가 다릅니다. 첫번째 인수로 인덱스를 입력합니다. 이전에 입력한 값에서 해당 인덱스의 값을 교체하는 것이 아니라 추가합니다. 그리고 데이터들이 하나씩 밀립니다.
List<String> listA = new ArrayList<String>();
listA.add("김삿갓");
listA.add("홍아리");
listA.add(new String("홍길동"));
listA.add(1, "1번째 요소값");
System.out.println(listA);
▼ 값을 꺼내고 싶을 때는 get(index) 함수를 사용합니다. 함수의 인수는 조회하고 싶은 데이터의 위치를 가리키는 인덱스입니다. 모든 데이터를 전부 가져오고 싶을 때는 Iterator 와 For loop문을 이용합니다. List 클래스의 iterator() 함수로 Iterator 객체를 리턴 받아 사용합니다.
import java.util.Iterator;
// 인덱스를 통한 조회
String element0 = listA.get(0);
String element1 = listA.get(1);
String element3 = listA.get(2);
//Iterator 통한 전체 조회
Iterator<String> iterator = listA.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
//for-loop 통한 전체 조회
for(Object object : listA) {
String element = (String) object;
}
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 자바(Java) 주석 Comments 소스 내에 작성하는 방법 ▶ 자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 ▶ 윈도우10 자바(Java) 버전 확인하기 ▶ 자바(Java) public, private, protected, default 접근 제어자 차이점은 ▶ 자바(Java) 버전 확인하고 최신으로 업데이트 하는 방법 |
◎ 값 삭제하는 방법 - remove |
▼ 객체를 삭제하는 방법은 두가지가 있습니다. 인덱스를 이용하는 방법과 동일한 오브젝트를 인수로 넘겨서 삭제하는 방법입니다. 오브젝트를 이용해서 삭제하면 삭제 결과가 성공인지 실패인지만 알려주며, 인덱스로 삭제하면 어떤 데이터를 삭제했는지 반환한 값으로 알 수 있습니다.
l remove(Object element) : 동일한 오브젝트로 삭제하기, 삭제결과 true/false
l remove(int index) : 인덱스로 삭제하기, 삭제한 결과값 반환
// 삭제하기
System.out.println(listA.remove(0));
System.out.println(listA.remove("홍길동"));
// 출력한 결과값
김삿갓
true
◎ 값이 있는지 확인하는 방법 - contains |
▼ 리스트안에 있는 데이터가 존재하는 확인하는 함수는 contains 입니다. 함수 인수로 오브젝트를 넘기면 존재 여부를 boolean 값을 반환합니다.
System.out.println(listA.contains("홍길동"));
// 결과
false
◎ 원하는 데이터 앞에 값을 추가하고 싶을 때 |
▼ 위에서 값을 추가할 때 add() 함수의 첫번째 인수로 인덱스를 넘기면 해당 위치 앞에 값이 추가된다고 했습니다. 추가하고 싶은 데이터의 위치에 해당하는 인덱스 값을 알수 없으면 어떻게 할까요? indexof() 함수를 이용해서 위치값을 찾은 뒤 add() 함수를 이용하는 방법이 있습니다. Indexof() 은 입력한 데이터의 위치를 찾아 반환하는 함수입니다.
// 홍길동 앞에 값 추가
int index = listA.indexOf("홍길동");
listA.add(index, "홍길동 앞에 값 추가");
◎ 전체 소스 |
아래 소스는 위에서 테스트한 전체 내용입니다. 참고하시기 바랍니다.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListExample {
public static void main(String[] args) throws InterruptedException {
List<String> listA = new ArrayList<String>();
listA.add("김삿갓");
listA.add("홍아리");
listA.add(new String("홍길동"));
listA.add(1, "1번째 요소값");
System.out.println(listA);
// 인덱스를 통한 조회
String element0 = listA.get(0);
String element1 = listA.get(1);
String element3 = listA.get(2);
//Iterator 통한 전체 조회
Iterator<String> iterator = listA.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
//for-loop 통한 전체 조회
for(Object object : listA) {
String element = (String) object;
}
// 삭제하기
System.out.println(listA.remove(0));
System.out.println(listA.remove("홍길동"));
// 존재 여부를 확인하고 싶을 때
System.out.println(listA.contains("홍길동"));
// 홍길동 앞에 값 추가
int index = listA.indexOf("홍길동");
listA.add(index, "홍길동 앞에 값 추가");
}
}
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 자바(Java) 주석 Comments 소스 내에 작성하는 방법 ▶ 자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 ▶ 윈도우10 자바(Java) 버전 확인하기 ▶ 자바(Java) public, private, protected, default 접근 제어자 차이점은 ▶ 자바(Java) 버전 확인하고 최신으로 업데이트 하는 방법 |
'자바(JAVA)' 카테고리의 다른 글
스프링 (Spring Boot) 메이븐 배포시 No Compiler is provided in this environment 에러 (7) | 2024.01.10 |
---|---|
자바(Java) 세계 시간, 각국 현재 시각 얻어 오는 방법 (0) | 2023.12.19 |
자바 No enclosing instance of type ... is accessible 컴파일 오류 수정 (5) | 2023.12.17 |
자바 Java 다중상속 인터페이스 다루는 방법 (0) | 2023.12.03 |
자바(Java) public, private, protected, default 접근 제어자 차이점은 (3) | 2023.10.23 |
자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 (1) | 2023.10.12 |
자바(Java) 숫자 나누기로 소수점 이하 출력하기 (0) | 2023.08.22 |
자바(Java) this, super 키워드, this(), super() 함수 사용하는 방법 (1) | 2023.01.20 |