자바
컬렉션 프레임워크 - ArrayList
망재이
2023. 1. 26. 20:58
- 컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션 클래스
- 저장순서가 유지되므로 저장순서가 유지되어야 하는 프로그램을 구상할 때 사용하면 좋음
- Object배열을 멤버변수로 선언하고 있으므로 모든 종류의 객체를 담을 수 있다.
- null도 저장할 수 있다.
- https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html
ArrayList (Java SE 17 & JDK 17)
Type Parameters: E - the type of elements in this list All Implemented Interfaces: Serializable, Cloneable, Iterable , Collection , List , RandomAccess Direct Known Subclasses: AttributeList, RoleList, RoleUnresolvedList Resizable-array implementation of t
docs.oracle.com
public static void main(String[] args)
{
//arraylist 객체 생성 후 list저장
ArrayList<String> list1 = new ArrayList<>();
list1.add("5");
list1.add("4");
list1.add("3");
list1.add("2");
list1.add("1");
list1.add("3"); //중복 허용 순서 유지
//객체 참조
for(int i=0;i<list1.size();i++) { //list 객체 갯수
System.out.println(list1.get(i)); //list에 저장된 값 불러오기
}
System.out.println();
// 5 4 3 2 1 3
//객체 삭제하기
list1.remove(0); // 인덱스 0번째 값 삭제
for(int i=0;i<list1.size();i++) {
System.out.println(list1.get(i));
}
// 4 3 2 1 3
}
// 두번째 예제
public class Ex02_ArrayList
{
public static void main(String[] args)
{
ArrayList list1 = new ArrayList(10);
list1.add(5);
list1.add(4);
list1.add(2);
list1.add(0);
list1.add(1);
list1.add(3); // list에 값 저장. 중복 허용
ArrayList list2 = new ArrayList(list1.subList(1, 4)); // 인덱스1부터 인덱스4전까지 저장된 값 반환
print(list1, list2);
//list1 : 5,4,2,0,1,3 list2 : 4,2,0
Collections.sort(list1); // 오름차순 정렬
Collections.sort(list2);
print(list1,list2);
//list1 : 0,1,2,3,4,5 list2 : 0,2,4
System.out.println("list1.containsAll(list2): "+list1.containsAll(list2)); //list1이 list2의 모든 요소를 포함하고 있을 때만 true
list2.add("B");
list2.add("C"); //4,2,0,B,C
list2.set(3,"A"); //3번째 인덱스의 값을 "A"로 바꿔라
print(list1, list2);
//list2 : 0,2,4,A,C
System.out.println("list1.retainAll(list2): "+list1.retainAll(list2)); //list1에 list2와 겹치는 부분만 남기고 다 삭제
print(list1, list2);
//list1 : 0,2,4
for(int i=list2.size()-1;i>=0;i--) { //list2에서 list1에 포함된 객체들 삭제
if(list1.contains(list2.get(i)))
list2.remove(i);
}
print(list1, list2);
}//list1 : 0,2,4 list2 : A,C
private static void print(ArrayList list1, ArrayList list2)
{
System.out.println("list1: "+list1);
System.out.println("list2: "+list2);
System.out.println();
}
}
public class Ex02_ArrayList
{
//긴 문자열 데이터를 원하는 길이로 잘라서 ArrayList에 담은 다음 출력하는 예제
public static void main(String[] args)
{
final int LIMIT = 10; //자르고자 하는 글자수 지정
String source = "0123456789abcdefghijklmnopqrstuvwxtz~!@#$%^&*()";
int length = source.length();
List list = new ArrayList(length/LIMIT+10); //저장공간을 여유롭게 지정해준다.
for(int i=0;i<length;i+=LIMIT) {
if(length>LIMIT+i) {
list.add(source.substring(i, LIMIT+i)); // 총 길이가 내가 자르고자 하는 길이보다 크다면 i부터 LIMIT+i까지 잘라서 list에 저장
} else {
list.add(source.substring(i));
}
}
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
}
}
/*0123456789
abcdefghij
klmnopqrst
uvwxtz~!@#
$%^&*()*/
728x90