앞서 포스팅한 배열은 정적배열이다.
처리할 데이터의 개수가 정해진 경우 정적배열을 사용하면 편하지만
고정되어있지 않을때 괜히 자리를 만들고 사용을 하지 않는등 자원을 낭비할수있다.
그 해결을 위해서 동적배열을 사용한다. [ "확장 가능한 배열"]
Collection 인터페이스를 확장하는 인터페이스는 List, Queue, Set이 있다.
그중 List인터페이스를 구현한 클래스가 ArrayList이다.
동적배열은 크기가 유동적인 배열이다. 자바는 이를 위해 ArrayList 클래스를 지원한다.
컬렉션 프레임워크를 설명하기전이기에
간단하게 동적 배열의 개념에서만 설명할것이다!
1. ArrayList 객체 생성
ArrayList<Integer> list = new ArrayList<>();
-> ArrayList<참조타입> 참조변수 = new ArrayList<>(); 이다.
참조타입을 설정해 놓으면 해당 참조타입의 객체만 넣을 수 있다.
**
참조타입을 기초 타입으로 입력하고 싶을경우 Wrapper class를 이용해야하므로
-> 첫문자를 대문자로, int의 경우에는 Integer로 해주어야한다.
[ex) Integer, Long, Double...]
**
객체를 선언할 때 매개 변수를 넣지않았다면 초기 크기는 10이다.
10개 이상 들어가면 크기를 늘리는 작업이 자동으로 수행된다.
2. ArrayList 원소 접근
원소에 접근하는 메서드에는
참조변수. add(); // ArratList에 원소 추가
참조변수. remove(); // 괄호에 들어있는 인덱스 번호의 원소를 지운다. // 삭제한 데이터를 반환한다.
// 위치, 객체 둘다 매개변수로 줄 수 있다.
참조변수. clear(); // 모든 데이터를 삭제한다.
참조변수. get(); // 괄호에 들어있는 인덱스 번호의 원소를 반환한다.
참조변수. size(); // ArratList의 크기를 반환한다.
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListDemo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>(); //ArrayList선언
int sum=0;
int data;
while((data = in.nextInt())>=0) { // 입력받아 list에 add한다.
list.add(data);
}
for(int i=0;i<list.size();i++) { //get메소드를 이용해 순서대로 반환한다.
sum += list.get(i);
}
System.out.print("평균은 : " + sum/list.size());
}
}
++ )
ArrayList는 쓰레드에 안전하지 않다.
Vector가 쓰레드에 안전하다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'프로그래밍 > JAVA' 카테고리의 다른 글
Java - 상속[extends] (0) | 2021.08.29 |
---|---|
java - 객체 배열(9) (0) | 2021.08.27 |
JAVA - 배열의 선언과 생성(7) + String (0) | 2021.08.26 |
java - 문자열[==,!=,compareTo, equals](6) (0) | 2021.08.23 |
자바 - 정적멤버[static](5) (0) | 2021.08.21 |