다연이네

[days21] 컬렉션 프레임워크 본문

Java

[days21] 컬렉션 프레임워크

 다연  2020. 10. 19. 18:39
반응형

컬렉션 프레임워크

- 데이터 군을 저장하는 클래스들을 표준화한 설계

- 배열의 단점(ex. 동적으로 변하지 않는 길이, 데이터 삽입 삭제시의 복잡성)을 해결해준다.

  

컬렉션 프레임워크의 인터페이스 이해

 

 

 

 [List] ArrayList, Vector, LinkedList, Stack, PQueue
 [Set] HashSet, TreeSet, LinkedHashSet
 [Map] HashMap, Hashtable, LinkedHashMap


 TreeMap 이진트리구조 + 맵
 [Tree] 트리가 붙어있으면  => 검색 성능이 향상된 맵 계열의 컬렉션 클래스
 [Hash] 해시가 붙어있으면 => 검색 성능 향상

//검색 기능 필요하면 - Hash~~ 찾아라
//부분(범위)검색, 정렬이 필요하면 - Tree~  [Set]

 

 


- HashSet
- TreeSet
- LinkedHashSet
Set은 인덱스로 객체를 관리하지 않기 때문에 데이터를 검색하기 위해서는 iterator() 메서드로 Iterator(반복자)를 생성하고 데이터를 가져와야 한다.
> HashSet과 TreeSet의 차이 : 트리셋은 오름차순 정렬이 기본
> LinkedHashSet 은 입력된 순서대로 데이터 관리

 

ArrayList 기본 add, remove 

package review;

import java.util.ArrayList;

public class Review01 {

	public static void main(String[] args) {
		
	ArrayList list = new ArrayList();
	list.add(1);
	list.add(2);
	list.add(3);
	System.out.println(list); //[1, 2, 3]
	
	list.add(1, 100); //[1, 100, 2, 3]

	list.remove(2);
	System.out.println(list); //[1, 100, 3]
	
	
		
	}

}

인터페이스 종류

package review;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Review01 {

	public static void main(String[] args) {
		
	ArrayList team01 = new ArrayList();
	team01.add("한애숙");
	team01.add("오영복");
	team01.add("오아리");
	team01.add("오동동");
	team01.add("한애숙");
	team01.add(null);
	team01.add(null);
	
	System.out.println(team01); //[한애숙, 오영복, 오아리, 오동동, 한애숙, null, null]

	//문제1 team01에 오아리 있는지 확인
	System.out.println(team01.contains("오아리")); //true
	System.out.println(team01.indexOf("오아리")); //2 (없다면 -1)
	
	//문제2 [1]번째 사람을 찾아오자
	System.out.println(team01.get(1)); //오영복
	
	//문제3 for-each문을 활용해 모든 사람 이름 출력
	for (Object object : team01) {
		String name = (String)object; //다운캐스팅
		System.out.print(name+" ");
	}
	
	//문제4 사람 지우기
	//team01.remove(0); //위치값으로 지우기
	//team01.remove("한애숙"); //객체명으로 지우기
	
	//문제5 null값 지우기 (null 2개 존재)
	/*for (int i = team01.size()-1; i >=0 ; i--) {
		String name = (String)team01.get(i);
		if(name==null) team01.remove(i);
	}*/
	//람다식 사용
	team01.removeIf(a -> a==null);
	System.out.println(team01); //[한애숙, 오영복, 오아리, 오동동, 한애숙]

	//문제5 정렬
	Collections.sort(team01);
	System.out.println(team01);
	
	ArrayList team02 = new ArrayList();
	team02.add("봉미선");
	team02.add("신형만");
	team02.add("신짱구");
	team02.add("신짱아");
	team02.add("흰둥이");
	
	ArrayList class5 = new ArrayList(team01); 
	//team01을 class5에 삽입
	class5.addAll(team02); 
	//team02도 class5에 삽입
	
	List list = class5.subList(2, 5); //2~4값 잘라옴
	System.out.println(list);
	
	//신짱구->스폰지밥 수정
	class5.set(class5.indexOf("신짱구"), "스폰지밥");
	
	//용량 - 잘 사용X
	//team01.ensureCapacity();
	
	//반복자 돌려줌
			Iterator ir = class5.iterator();
			
			while (ir.hasNext()) { //요소 가지고 있니? T/F
				String name = (String) ir.next(); //next()요소를 얻어오는 메소드
				System.out.println(name);
			}
	
	
	
	
	
		
	}

}
반응형
Comments