일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 스프링 종류
- 자바
- 클라이언트
- lord of sqlinjectin
- 서버
- 자바 문법
- Los
- 해킹
- 자바 Array list
- Lord of sqlinjection
- 보안
- 스프링 특징
- 웹
- 자바 has-a
- APM
- 소켓
- 스프링구조
- injection
- php
- 웹 개발
- 마이크로서비스 아키택트
- sql
- 세션
- lord of sqlinjection`
- 자바 is-a
- sqlinjection
- 세션쿠키
- 쿠키
- XSS
- 스프링
- Today
- Total
LJ
자바 Array list 본문
배열과의 차이점
배열과의 차이점은 배열이 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변합니다.
내부적으로 저장이 가능한 메모리 용량이 있으며 현재 사용 중인 공간의 크기가 있습니다.
만약 현재 가용량이상을 저장하려고 할 때 더 큰 공간의 메모리를 새롭게 할당합니다.
ArrayList란?
ArrayList란 Collection 프레임워크의 일부이며 java.util 패키지에 소속되어 있습니다

표준 배열보다는 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있습니다
List 인터페이스에서 상속받아 사용이 됩니다
ArrayList는 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용량이 늘어납니다

1. ArrayList 생성
자바에서 ArrayList를 사용하려면 아래 구문을 먼저 추가해야 합니다.
import java.util.ArrayList;
ArrayList의 생성은 다음과 같은 구문들로 가능합니다.
ArrayList<Integer> integers1 = new ArrayList<Integer>(); // 타입 지정
ArrayList<Integer> integers2 = new ArrayList<>(); // 타입 생략 가능
ArrayList<Integer> integers3 = new ArrayList<>(10); // 초기 용량(Capacity) 설정
ArrayList<Integer> integers4 = new ArrayList<>(integers1); // 다른 Collection값으로 초기화
ArrayList<Integer> integers5 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
보통 생성할 때는 new ArrayList<>()와 같이 타입을 생략해서 작성합니다.
ArrayList를 생성할 때 Set이나 다른 ArrayList를 전달하면 해당 Collections의 값들로 초기화됩니다.
마지막으로 가변 인자를 전달받는 Arrays.asList()를 사용하면 기본 값들로 생성 가능합니다.
2. ArrayList 엘레멘트 추가/변경
ArrayList를 생성한 후 add() 메소드로 엘레멘트를 추가할 수 있습니다.
또한 set() 메소드로 기존에 추가된 값을 변경하는 것도 가능합니다.
add()의 사용법에는 두 가지가 있습니다
add(Object) : ArrayList의 마지막에 데이터를 추가합니다
add(int index, Object) : ArrayList의 index에 데이터를 추가합니다
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> colors = new ArrayList<>();
// add() method
colors.add("Black");
colors.add("White");
colors.add(0, "Green");
colors.add("Red");
// set() method
colors.set(0, "Blue");
System.out.println(colors);
}
}
add()는 기본적으로 리스트의 가장 끝에 값을 추가합니다.
별도로 인덱스를 지정하면 해당 인덱스에 값이 추가되고 그 인덱스부터의 값들이 1 칸씩 밀립니다.
결과는 아래와 같이 출력됩니다.
결과
Black과 White는 순서대로 추가가 되며 Green이 첫 번째에 추가되면서 Black과 White는 각각 한 칸씩 밀리게 됩니다.
그리고 Red가 맨 끝에 다시 추가되는 것을 확인할 수 있습니다.
마지막으로 set() 메소드를 통해 가장 앞(Index: 0)의 Green이 Blue로 변경됩니다.
3. ArrayList 엘레멘트 삭제
추가했던 값을 삭제할 때는 remove() 메소드를 호출합니다.
import java.util.ArrayList;
import java.util.Arrays;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> colors = new ArrayList<>(Arrays.asList("Black", "White", "Green", "Red"));
String removedColor = colors.remove(0);
System.out.println("Removed color is " + removedColor);
colors.remove("White");
System.out.println(colors);
colors.clear();
System.out.println(colors);
}
}
삭제할 때는 엘레멘트의 인덱스를 입력하거나 엘레멘트를 직접 입력할 수 있습니다.
인덱스를 통해 삭제할 경우 삭제되는 엘레멘트를 리턴받을 수 있습니다.
값을 지움과 동시에 해당 값으로 별도의 작업이 필요한 경우 리턴을 받아서 사용하면 됩니다.
ArrayList 안의 내용을 전체 삭제할 때는 clear()를 호출하면 됩니다.
4. ArrayList 전체 값 확인
ArrayList의 모든 값들을 순회해서 출력하고 싶은 경우 다양한 방법을 사용할 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> colors = new ArrayList<>(Arrays.asList("Black", "White", "Green", "Red"));
// for-each loop
for (String color : colors) {
System.out.print(color + " ");
}
System.out.println();
// for loop
for (int i = 0; i < colors.size(); ++i) {
System.out.print(colors.get(i) + " ");
}
System.out.println();
// using iterator
Iterator<String> iterator = colors.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
// using listIterator
ListIterator<String> listIterator = colors.listIterator(colors.size());
while (listIterator.hasPrevious()) {
System.out.print(listIterator.previous() + " ");
}
System.out.println();
}
}
for-each 반복문으로 각각의 값을 순회해서 출력하는 것이 가능합니다.
또한 get() 메소드로 각 인덱스의 값을 순차적으로 탐색하는 방법도 가능합니다.
그리고 iterator나 listIterator를 통해 값들을 순회하는 것도 가능합니다.
listIterator의 경우 생성 시 ArrayList의 크기를 입력해주고 역방향으로 출력할 수 있습니다.
출력 결과
마지막의 경우 역순서로 출력이 되는 것을 확인할 수 있습니다.
5. 값 존재 유무 확인
ArrayList의 안에 값이 존재하는지 존재한다면 어느 위치에 존재하는지 알고 싶은 경우가 있습니다.
먼저 값이 존재하는지만 알고 싶은 경우 contains()를 사용합니다.
값이 존재할 때 어느 위치에 존재하는지 알고 싶은 경우 indexOf()를 사용할 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> colors = new ArrayList<>(Arrays.asList("Black", "White", "Green", "Red"));
boolean contains = colors.contains("Black");
System.out.println(contains);
int index = colors.indexOf("Blue");
System.out.println(index);
index = colors.indexOf("Red");
System.out.println(index);
}
}
contains()는 값이 있는 경우 true를, 값이 없는 경우 false를 리턴합니다.
indexOf()는 값이 존재하는 경우 해당 엘레멘트의 인덱스를 리턴합니다.
값이 존재하지 않을 경우 -1을 리턴하기 때문에 별도로 처리가 가능합니다.
'IT > 자바' 카테고리의 다른 글
자바 객체 선언과 생성 (0) | 2022.09.27 |
---|---|
자바 업 캐스팅 다운 캐스팅 (0) | 2022.09.26 |
자바 is-a has-a (0) | 2022.09.26 |
자바 향상된 for 문 (0) | 2022.09.26 |
자바 static (0) | 2022.09.26 |