Collection - ArrayList

성혜·2024년 1월 23일
0

Java

목록 보기
14/25
post-thumbnail

컬렉션, Collection

JCF, Java Collection Framework

(향상된) 배열

  • 성능 향상
  • 사용법 향상
  • 길이 가변 > 배열의 길이가 늘었다 줄었다가 가능해진다.

컬렉션은 인터페이스이다.

  • 컬렉션 메서드 코드
컬렉션내의 크기와 정보를 알아내는 메서드
int size()
boolean isEmpty()

객체의 삽입을 담당하는 메서드
boolean add(Object element)
boolean addAll(Collection other)

객체의 삭제를 담당하는 메서드
boolean remove(Object obj)
boolean removeAll(Collection other)
void clear():해당 컬렉션의 모든 요소들을 제거한다 .
boolean retainAll(Collection other)

검색이나 정보의 확인을 위한 메서드들
boolean contains(Object obj)
boolean containsAll(Collection others)
Iterator iterator()

내부의 모든 요소들을 객체배열로 리턴하는 메서드들
Object[] toArray()
Object[] toArray(Object[] a)

컬렉션 종류

1. List 계열

  • ArrayList - 많이 쓰임
  • LinkedList
  • Queue
  • Stack
  • Vector

2. Set 계열

  • HashSet - 많이 쓰임
  • TreeSet

3. Map 계열

  • HashMap - 많이 쓰임
  • TreeMap
  • Properties
  • HashTable



ArrayList 클래스

Iterable, Collection, List

Resizable-array implementation of the List interface. // 배열 길이 조정 가능

순수 배열하고 구조가 가장 유사함


  • 일반 배열과 ArrayList 비교
		//배열
		//- 타입 명시(int)
		//- 길이 명시(3)
		int[] nums1 = new int[3];
		
		//요소 접근> 첨자(index) 사용
		nums1[0] = 10; //배열[index] > 인덱서(Indexer)
		nums1[1] = 20;
		nums1[2] = 30;
		
		System.out.println(nums1[0]);
		System.out.println(nums1[1]);
		System.out.println(nums1[2]);
		
		System.out.println(nums1.length);
		System.out.println();
		
		//컬렉션
		//- 타입 명시(x) > Object 배열을 가지고 있음 
		//- 길이 명시(x) > 가변
		//ArrayList nums2 = new ArrayList(); => 요즘은 이거 안 씀
		ArrayList<Integer> nums2 = new ArrayList<Integer>();	
		
		
		//요소 접근
		//- boolean add(T value)
		//- Append(차례대로 추가)
		nums2.add(100); //nums2[0] = 100
		nums2.add(200); //nums2[1] = 200
		nums2.add(300); //nums2[2] = 300
		
		System.out.println(nums2.get(0));
		System.out.println(nums2.get(1));
		System.out.println(nums2.get(2));
		
		System.out.println(nums2.size());
		
		nums2.add(500);
		nums2.add(600);
		
		System.out.println(nums2.size()); //길이가 3개에서 5개로 자동으로 늘어남 
		System.out.println();
		
		for(int i=0; i<nums2.size();i++) {
			System.out.println(nums2.get(i));
		}
                                         
//결과
10
20
30
3

100
200
300
3
5

100
200
300
500
600

  • ArrayList 기능

    		ArrayList<String> list = new ArrayList<String>();
    
    			// 1. 요소 추가하기
    			// - boolean add(T value)
    			// - 배열의 마지막에 추가 > Append Mode
    			list.add("바나나");
    			list.add("딸기");
    			list.add("사과");
    			list.add("포도");
    			list.add("귤");
    
    			// 2. 요소 개수
    			// -int size()
    			System.out.println(list.size()); //결과 : 5
    
    			// 3. 요소 읽기
    			// - T get(int index)
    			System.out.println(list.get(2)); //결과 : 사과
    			// System.out.println(list.get(5));// IndexOutOfBoundsException
    
    			System.out.println(list.get(list.size() - 1)); // 결과 : 귤
    
    			// 4. 요소 수정
    			// - T set(int index, T newValue)
    			String temp = list.set(2, "파인애플");
    			System.out.println(temp); //결과 : 사과 (해당 위치에 있던 값 반환)
    			System.out.println(list.get(2)); //결과 : 파인애플
    
    			// 5. 요소 삭제
    			// 방 없애기 > 길이 줄어든다. => 배열은 안됨. 방 개수가 고정
    			// - T remove(int index) > 방 번호를 찾아서 삭제
    			// - boolean remove(T value) > 값을 찾아서 삭제
    			// - 시프트 발생 > 삭제된 방 이후로 모든 요소의 방번호
    			System.out.println(list.size()); // 5
    			list.remove(2);
    			System.out.println(list.size()); // 4
    			System.out.println(list.get(3)); //귤
    
    			// 6. 요소 추가
    			// - 요소를 원하는 위치에 추가
    			// - Insert Mode
    			// - void add(int index, T value);
    			// - 시프트 발생 > 삽입된 방 이후의 모든 요소는 방번호 + 1
    			System.out.println(list.get(3)); //결과 : 귤
    			list.add(2, "망고");
    			System.out.println(list.get(3)); //결과 : 포도
    			System.out.println(list.size()); //결과 :5
    		
    			//7. 요소 검색
    			//- int indexOf(T value)
    			//- int lastIndexOf(T value)
    			//- boolean contains(T value)
    			System.out.println(list.indexOf("사과")); //결과 : -1 (사과 없음)
    			System.out.println(list.indexOf("파인애플")); //결과 : -1 (파인애플 없음)
    			System.out.println(list.indexOf("포도")); //결과 : 3
    		
    			//요소 삭제시 이름으로도 날릴 수 있음
    			list.remove(3); //이 형식을 많이 씀
    			list.remove("포도"); //동일한 포도를 식별하지 못하고 맨 처음 포도만 지움
    			System.out.println(list.indexOf("포도")); //결과 : -1
    		
    		
    			//8. 요소 탐색
    			for(int i=0; i< list.size();i++) {
    				System.out.println(list.get(i));
    			}
    			System.out.println();
    		
    			//결과
    			//바나나
    			//딸기
    			//망고
    			//귤
    		
    			//for문
    			//- 향상된 for문(Enhanced for statement)
    			//- for(변수 : 배열)
    			//- 루프 변수가 없음 
    			// 무조건 처음부터 끝까지 가져오는 for문
    			for(String item : list) {
    				System.out.println(item);
    			}
    			System.out.println();
    			//결과
    			//바나나
    			//딸기
    			//망고
    			//귤
    		
    			//9. 초기화
    			//- 모든 요소 삭제 > 모든방.remove()
    			//- void clear()
    		
    			list.clear();
    		
    			System.out.println(list.size()); //결과 : 0
    		
    			//10. 빈배열 확인
    			//- boolean isEmpty()
    			System.out.println(list.isEmpty()); //true
    			System.out.println(list.size()==0); //true
    		
    			list.add("사과");
    		
    			System.out.println(list.isEmpty()); //false
    			System.out.println(list.size()==0); //false
    
profile
하루를 정리하고 기록합니다.

0개의 댓글