ArrsyList
List 인터페이스의 구현체
ArrayList의 객체를 추가하면 객체가 인덱스로 관리된다.
일반 배열은 크기가 고정이라 크기 변경이 불가하지만, ArrayList는 크기 변경이 가능하다.
(저장용량을 초과한 객체가 들어오면 자동으로 저장용량을 늘린다)
import 필요
ArrayList 선언방법
1. ArrayList<자료형> 객체명 = new ArrayList<자료형>( );
ArrayList<Integer> al = new ArrayList<Integer>();
2. ArrayList<자료형> 객체명 = new ArrayList<자료형>(다른 ArrayList)
ArrayList<String> al01 = new ArrayList<String>();
al01.add("홍길동");
al01.add("김길동");
al01.add("이길동");
al01.add("박길동");
al01.add("최길동");
System.out.println(al01);
ArrayList<String> al02 = new ArrayList<String>(al01); //al02소스로 al01이 와도 값만 가져간다.
System.out.println(al02);
System.out.println(al01 == al02); //값만 가져왔기 때문에 두 객체는 다른 객체.
al02.add("황길동");
System.out.println(al02);
[실행결과]
[홍길동, 김길동, 이길동, 박길동, 최길동]
[홍길동, 김길동, 이길동, 박길동, 최길동]
false
[홍길동, 김길동, 이길동, 박길동, 최길동, 황길동]
값 추가하기
.add(입력값)
index 0부터 차례대로 값이 추가됨
ArrayList<Integer> al = new ArrayList<Integer>();
System.out.println(al);
al.add(10); //index 0
al.add(20); //1
al.add(30); //2
al.add(40); //3
al.add(50); //4
System.out.println(al);
[실행결과]
[]
[10, 20, 30, 40, 50]
값 호출하기
.get(인덱스)
해당 인덱스값 호출
Integer int1 = al.get(0);
Integer int2 = al.get(3);
System.out.println(int1);
System.out.println(int2);
[실행결과]
10
40
특정 인덱스 삭제
.remove(인덱스)
해당 인덱스값 삭제
al.remove(0);
System.out.println(al);
[실행결과]
[20, 30, 40, 50]
특정 인덱스에 값 추가
.add(인덱스, 값)
al.add(0, 1000);
System.out.println(al);
[실행결과]
[1000, 20, 30, 40, 50]
특정 인덱스 수정
.set(인덱스, 수정할 값)
al.set(al.size() - 1, 5000); //al의 크기 -1 (제일 끝자리 인덱스)
System.out.println(al);
[실행결과]
[1000, 20, 30, 40, 5000]
특정 값이 있는지 찾기
.contains(찾는 값)
- 있다면 true
- 없다면 false
System.out.println(al.contains(30));
System.out.println(al.contains(60));
[실행결과]
true
false
특정 값의 인덱스 반환
.indexOf(반환할 값)
- 있다면 해당값의 인덱스
- 없다면 -1
System.out.println(al.indexOf(30));
System.out.println(al.indexOf(60));
[실행결과]
2
-1
해당 배열에 값이 비어있는지 확인
.isEmpty( );
- 비어있다면 true
- 비어있지 않다면 false
System.out.println(al.isEmpty());
[실행결과]
false
전체 코드
ArrayList<Integer> al = new ArrayList<Integer>(); //ArrayList 선언
System.out.println(al);
al.add(10); //값 추가
al.add(20);
al.add(30);
al.add(40);
al.add(50);
System.out.println(al);
Integer int1 = al.get(0); //값 호출
Integer int2 = al.get(3);
System.out.println(int1);
System.out.println(int2);
al.remove(0); //특정 인덱스 삭제
System.out.println(al);
al.add(0, 1000); //특정 인덱스에 값 추가
System.out.println(al);
al.set(al.size() - 1, 5000); //특정 인덱스 수정
System.out.println(al);
System.out.println(al.contains(30)); //특정 값이 있는지 찾기
System.out.println(al.contains(60));
System.out.println(al.indexOf(30)); //특정 값의 인덱스 반환
System.out.println(al.indexOf(60));
System.out.println(al.isEmpty()); //해당 배열에 값이 비어있는지 확인
예제 1.
<랜덤값 지정하기>
- 1 ~ 100 까지의 수 중 10가지의 랜덤한 수 를 리스트에 넣기
- Collections import하여 사용
ArrayList<Integer> al = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
al.add((int)(Math.random() * 100 + 1));
}
System.out.println(al);
Collections.sort(al);
System.out.println(al);
Collections.shuffle(al);
System.out.println(al);
- Collections.sort(객체명) : 오름차순 정렬
- Collections.shuffle(객체명) : 무작위 정렬
[3회 실행결과]
[95, 71, 32, 19, 68, 82, 46, 33, 70, 96]
[19, 32, 33, 46, 68, 70, 71, 82, 95, 96]
[68, 46, 82, 70, 95, 96, 33, 71, 19, 32]
[94, 95, 56, 9, 26, 64, 76, 37, 74, 2]
[2, 9, 26, 37, 56, 64, 74, 76, 94, 95]
[95, 76, 74, 2, 64, 56, 26, 37, 94, 9]
[39, 93, 12, 32, 23, 51, 59, 21, 25, 17]
[12, 17, 21, 23, 25, 32, 39, 51, 59, 93]
[12, 21, 59, 93, 32, 23, 17, 51, 25, 39]
예제 2.
<ArrayList 안에 ArrayList 넣기>
- [1, 2, 3]
[4, 5, 6]
[7, 8, 9] 의 형태로 출력
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
ArrayList<String> innerList = new ArrayList<String>();
innerList.add("1");
innerList.add("2");
innerList.add("3");
list.add(innerList);
innerList = new ArrayList<String>();
innerList.add("4");
innerList.add("5");
innerList.add("6");
list.add(innerList);
innerList = new ArrayList<String>();
innerList.add("7");
innerList.add("8");
innerList.add("9");
list.add(innerList);
for (ArrayList<String> in: list) {
System.out.println(in);
}
[실행결과]
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
'JAVA' 카테고리의 다른 글
HashSet (0) | 2021.07.22 |
---|---|
LinkedList (0) | 2021.07.22 |
컬렉션 (Collection) (0) | 2021.07.20 |
제네릭 (Generic) (0) | 2021.07.20 |
랩퍼 (Wrapper) (0) | 2021.07.19 |