20.12.10

민주·2021년 1월 17일
  1. Collection framework

    • 우리가 사용하기 편한 자료구조들을 만들어놓은게 컬렉션프레임워크
  2. Array List
    - ArrayList는 index로 객체를 관리 한다는 점에서 Array와 유사하지만 차이점은 Array와 달리 index가 유연하다
    - 객체 삭제나 추가시 index가 1씩 당겨지거나 미뤄진다.

    - 빈번한 삭제, 추가시 무리가 간다.

    - 10 : 배열처럼 크기를 따로 지정 안해줘도 된다. 해줘도 되지만 안해주는 게 일반적
    - 11 : ArrayList는 인터페이스인 List를 구현받은 클래스 이기 때문에 List형태로 넣어주었다.
    - 데이터 추가시 add메서드를 사용해주면 된다
    - 17 : list의 크기를 3으로 지정해줬지만 그냥 값을 넣어도 에러가 발생하지 않는다. 배열이었으면 ArrayIndexOutOfBounds exception 발생
    - 18 : 3에 이미 network가 들어가 있지만 값을 넣어주면 network는 4로 밀리고 3에 특정값을 넣어 줄 수 있다.

    - size : 리스트의 크기를 확인하는 메서드
    - get : 특정 인덱스의 값을 꺼내는 메서드
    - 24 ,25 : for문을 통해 list안에 있는 값을 다 꺼내왔다.
    - remove(index) : 특정 인덱스의 값을 지우는 메서드로 어떤 것을 지웠는지 알려준다
    - remove(값) : 해당 값을 지우고 지워졌는지 성공 여부 (boolean)
    - 34 , 35 : 향상된 for문으로 list의 남은 값을 item에 넣어준다
    - 38 , 39 : for문을 통해 남아있는 list의 값을 출력하는데 삭제된 것들 때문에 인덱스가 당겨진걸 확인할 수 있다
    - 출력값 :

  3. 데이터를 array로 받아왔는데 이것을 ArrayList로 변경하고 싶은 경우

    - Array -> List -> ArrayList 순으로 변경해주어야 한다.
    - 19 : Array를 list로 바꿔주는 작업인데 asList()는 객체를 만들 때 새로운 배열 객체를 만드는 것이 아니라 원본배열의 주소값을 가져온다. 모양만 list형태로 잡아 준것이고 구조자체가 다른거기 때문에 Arrays.asList()로 만든 리스트는 데이터 변경이 안된다.(22)
    - 27 : ArrayList를 객체화
    - 28 : Array를 List로 만든 list의 값을 전부 arrList에 부어 넣는다.
    - 29 : ArrayList로 변경 되어서 값을 넣는게 가능 해짐

  4. ArrayList의 데이터 수정, 검색, 초기화

  5. Vector

    • 벡터는 ArrayList와 같은데 한가지 차이점은 누군가가 사용하고 있다면 다른사람은 기다려야 한다는 것이다.
  6. Linked List
    - 기본적으로 ArrayList와 Linked List의 사용방법은 같다
    - 다른 점은 LinkedList는 좌우 데이터의 주소를 기억하는 주소를 갖는다
    - 그래서 중간에 데이터가 추가나 삭제가 되어도 밀리거나 당겨지지 않아 효율이 좋다.
    - 뒤에 넣을때는 계속 기억을 해야해서 효율성이 떨어진다



    - 실제로 소요되는 시간을 확인해 보는 방법이다.
    - 출력값 :
    - 인덱스 중간에 넣었기 때문에 LinkedList가 빠르다
    -
    - 28 , 37의 인덱스 값을 빼고 그냥 뒤에 추가해주는 방법의 출력값으로 ArrayList가 더 빠른것을 알수 있다.

  7. hash set
    - set 컬렉션은 순서가 유지되지 않고 중복을 허용하지않는 특성이 있다
    - 검색기능이 없는 대신에 하나씩 꺼낼수 있는 Iterator가 있다.

    - 13 : 사용하려는 클래스와 현재 클래스의 이름 같으면 객체화 하려는 클래스의 경로까지 표시된다
    그래서 웬만하면 이름이 겹치지 않 한다
    - add : list와 마찬가지고 값을 넣어주는 메서드
    - 19 : Set은 중복을 허용하지 않으므로 이 값은 들어가지 않는다

    - 24 : Iterator는 set을 하나씩 뽑아낼 수 있도록 조각내는 작업이다
    - 25 : hasNext()는 뽑아낼 값이 있는지 유무
    - 26 : 조각낸 값을 item에 넣는다
    - 24 : 향상된 for문을 이용하여 set에 있는 값을 하나씩 item에 넣는 작업이다. 이 방법을 많이쓴다.
    - 41 : clear는 set을 비우는 메서드
    - 43 : isEmpty는 비워졌는지 확인하는 메서드

  8. Hash Map

    - Key는 순서가 없으며 중복도 허용되지 않는다
    - Key와 Value는 한 쌍으로 Value는 중복가능하다
    - Key와 Value의 타입은 클래스나 인터페이스만 가능하다(int ->Integer)

    - Map을 객체화 해준뒤 put으로 데이터 값을 넣어주었다.
    - List와 Set은 Collection을 구현받아 메서드가 비슷한데 Map은 구현받지 않기 때문에 메서드가 다르다
    - 22 : map.get(key)는 특정 key에 대한 값을 확인하는 것이다.
    - 모든 값 출력 방법
    ○ 27 : Key를 Set형태로 가져온다. 둘다 중복이 없는 애들이기 때문에 가능하다
    ○ map.keySet()은 map의 모든 키를 가지고 있다.
    ○ Iterator로 keys를 뽑아낼 수 있도록 조각내는 작업이다

    - 37, 38 : 향상된 for문을 이용해 모든 값을 출력하는 법, 제일 많이 사용한다
    - 모든값 출력3은 복잡해서 선호하지 않으므로 이런게 있다정도만 알아두기
    - EntrySet은 key랑 값을 묶음으로 가져온다.

  9. HashTable
    - 해쉬테이블도 해쉬맵이랑 비슷한데 벡터처럼 내가 사용하고 있을때 남이 사용못한다.

    - map.containsKey(key) : 해당하는 키가 있는지 유무(boolean)
    - map.containsValue(Value) : 해당하는 값이 있는지 유무(boolean)

    - 해당 값을 갖는 키 출력하기

  10. LIFO
    - Last In First Out의 약자로 마지막 들어간 값이 먼저 나오는 것이다.
    - Stack memory가 LIFO의 전형이다.

    - Towel이라는 클래스에 매개변수를 String으로 받는 생성자 만들어줌

    - 9 : Stack을 객체화 시켜주었다
    - 12 , 13 : 변수에 담아서 값을 넣는 방법
    - 14 : 직접 넣는 방법
    - 22 , 23 : 변수에 담아서 값을 빼는 방법
    - 24 : 메서드 체이닝 : 값을 직접 빼서 retrun되는 값으로 다른 메서드를 또 사용하는 것.
    - pop : 수건을 꺼내서 쓰고 버린다
    - peek : 수건 쓰고 다시 넣기 때문에 사이즈가 변하지 않는다.

  11. FIFO
    - First In First Out : 먼저넣은 값이 먼저 나오는구조이다.
    - 예) Queue(줄) , 순차적으로 작업을 처리 할 때 유용하다.

    - 매개변수 String 2개를 갖는 생성자를 가진 클래스 Job 생성

    - 메인메서드
    - 13 : Queue는 실제하지 않고 인터페이스로 존재하기 때문에
    Queue에는 어떠한 조건들 있고 Queue가 하는 역할을 LinkedList에서 한다
    Queue의 타입으로 LinkedList를 객체화 한다고 이해.
    - queue.offer : 값을 넣는 메서드
    - queue.poll : 값을 빼는 메서드
    - queue.peek : 값을 빼고 다시 넣어서 무한루프 발생
    - queue.is Empty : queue가 비었는지 확인
    - 출력 값 :

profile
개발이좋아요

0개의 댓글