자바

컬렉션 프레임워크 - ArrayList

망재이 2023. 1. 26. 20:58
 

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