Java는 배열과 리스트를 각각 지원한다.
배열의 단점은 1) 생성시 지정된 크기를 변경할 수 없고, 2) 배열 안에서 설정된 요소의 개수를 셀 수 없다.
이를 극복하기 위한 것이 리스트인데, ArrayList와 LinkedList 두종류가 있다.
ArrayList는 데이터의 추가와 삭제가 느리지만 인덱스로 접근하는 속도가 빠르고, LinkedList는 그 반대이다.
리스트는 데이터의 추가, 삭제에 따라 순서가 밀리고 당겨진다.
[1] ArrayList 생성
우선 ArrayList를 import 해야한다. 그리고 나서 생성
ArrayList<Integer> list1 = new ArrayList<>(); // 우변의 타입 생략가능
ArrayList<String> list2 = new ArrayList<>(30); // 메모리 용량Capacity 초기설정, 가변적
ArrayList<Long> list3 = new ArrayList<>(long1); // 다른 Collections값으로도 생성가능
ArrayList<Character> list4 = new ArrayList<>(Arrays.asList('a','b','c')); // ArrayList 활용, 원소추가?
[2] ArrayList 추가/변경/삭제
// 추가 .add()
list1.add(10); // .add(값)
list1.add(20);
// 변경 .set()
list1.set(0, 20); // .set(인덱스, 값)
// 삭제 .remove()
list1.remove(0); // .remove(인덱스), 요소값 리턴받아 활용가능
list1.remove(20); // .remove(값)
list1.clear(); // 전체삭제
[3] ArrayList 조회
list.get(인덱스) : 해당 인덱스의 값 조회
list.size() : 리스트의 크기 // list.length X
hasNext() : 불린타입반환
next() : 그게 무엇이든 반환
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;
public class ListPractice {
public static void main(String[] args) {
ArrayList<Character> eng = new ArrayList<>(Arrays.asList('a','b','c','d','e'));
// [1] for문 조회
for(int i=0; i<eng.size(); i++) {
System.out.println(eng.get(i));
}
// [2] 향상된 for문 조회
for(Character chr : eng) {
System.out.println(chr);
}
// [3] 반복자 iterator 조회
Iterator<Character> itrt = eng.iterator();
while(itrt.hasNext()) {
System.out.println(itrt.next());
}
// [4] listIterator 조회
ListIterator<Character> listItrt = eng.listIterator();
while(listItrt.hasNext()) { // .hasNext(), .next() 대신 .hasPrevious() , .previous() 사용시 역순회가능
System.out.println(itrt.next());
}
}
}
[4] 값이 존재하는지 확인할때
// [1] 값이 존재하는지 여부만 알고싶을때
boolean be = eng.contains('a'); // .contains(값) -> 불린리턴
// [2] 값이 존재하는 위치를 알고싶을때
int where = eng.indexOf('b'); // .indexOf(값) -> index리턴
int nothere = eng.indexOf('k'); // 존재하지않으면 -1리턴
'Java' 카테고리의 다른 글
[Java] 상속 메소드 오버라이드, 자료형, super 클래스 (0) | 2021.07.24 |
---|---|
[Java] static과 private, Getter&Setter (0) | 2021.07.24 |
[Java] 객체, 클래스, 오버로딩 (0) | 2021.07.24 |
[Java] String 다루기(1) (0) | 2021.07.22 |
Collection, Object, Generic의 관계 (0) | 2021.07.15 |