카테고리 없음

[JAVA] Collection

뭔가 한다 2024. 10. 8. 20:34

Collection

  • 참조형 변수만 저장
  • List : 데이터 중복 허용(~ Array ; 정적 배열(크기 고정)) ; 동적 배열(크기가 가변적)
    • 동적이기에 초기화 필요 없음
    • ArrayList
    • ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 // .add([num], value) : 추가 (num 입력시 num번째에 추가) // .get(num) : num번 째 값 반환 // .set(num, value) : num 번 째 value로 값 수정 // .remove(num) : num 번 째 삭제 // .toString() : 문자열로 반환 -> toString을 안하면 arrayList type으로 출력 // .clear() : 전체 삭제 // 궁금증 // .set은 value 여러개가 불가 그럼 .add는? 불가능
    • LinkedList
      • 메모리에 남는 공간에 나누어서 값을 나누어 담음 → 속도 느림
      • 값 추가, 삭제는 빠름
      • 전체적인 기능은 ArrayList 와 동일
    • Stack : LIFO
      • 최근 데이터 나열에 용이, 중복처리에도 좋음
      Stack<Integer> intStack = new Stack<Integer>(); // 선언
      // .isEmpty() : 값이 비어있는지 확인
      // .push(value), .pop()
      // .peak() : 맨 윗 값 조회
      // .size() : Array.length() 와 같은 기능
      
  • Queue : FIFO 구조
    • .add(value); 추가, .peek(); 제일 아랫값 조회, .poll(); ~pop
    • Queue<Integer> queue = new LinkedList<Integer>(); // queue는 인터페이스 이기에 LinkedList를 통해야 함(생성자가 없음)
  • Set : 순서 없고 데이터 중복 안됨(~집합)
    • Queue와 동일하게 생성자 없음
    • HashSet은 생성자가 있기에 생성 가능
    • HashSet : Hash Table, 대표
    • TreeSet : tree형 구조, HashSet특성 + 오름차순 → 정렬하고 싶을 경우 사용
    • LinkedHashSet : 중복 불가, 입력한 순서로 데이터 저장
      • 추가 순서 || 최근 접근 순서로 접근 가능
    // index를 지원하지 않아서 for문 사용해도 요소 엑세스 불가
    // 참조 타입만 지원
    Set<Integer> set = new HashSet<Integer>();
    // .contains(type data) : 가지고 있는지 확인
    // .add시 중복된 값을 덮어 씀/ .remove(삭제)
    
  • Map : (key: value) ~Object
    • Object 와 비슷, key로 value 조회 가능
    • HashMap: HashSet과 비슷, key : value → null값 허용
    • TreeMap : key 기준 정렬, 오름차순(저장시간 오래 걸림)
    •  
Map<String, Integer> map = new HashMap();