[230727] 제네릭, 리스트, set (DAY22)

MJ·2023년 7월 28일

수업 TIL🐣💚

목록 보기
23/68

제네릭(generic)

  • 데이터의 타입(data type)을 일반화하는 것(generalize)
  • 오직 "참조타입"만 Generic 처리해서 사용할 수 있음
public class MainWrapper {

  public static void main(String[] args) {
    // String을 저장하는 box1
    Box<String> box1 = new Box<String>();
    box1.setItem("Hello World");
    System.out.println(box1.getItem());

    // int를 저장하는 box2
    // 오직 "참조타입"만 Generic 처리해서 사용할 수 있음
    // int의 참조타입인 Integer를 사용
    Box<Integer> box2 = new Box<Integer>();
    box2.setItem(10);
    System.out.println(box2.getItem());

    // Person을 저장하는 box3
    Box<Person> box3 = new Box<Person>();
    box3.setItem(new Person("홍길동"));
    System.out.println(box3.getItem());

  }
}


리스트(List)

  • ArrayList의 인터페이스 List 타입 선언
List<String> season;
  • ArrayList 생성
season = new ArrayList<String>(); 
//List = 부모타입, ArrayList = 자식타입, ArrayList가 List 업캐스팅해서 쓰고 있는 거
  • ArrayList의 선언 & 생성
List<String> hobbies = new ArrayList<String>();
  • 배열 요소 추가하기
    season.add("여름");
    season.add("가을");
    season.add("겨울");
    season.add(0, "봄"); //인덱스 0에 "봄" -> 여름, 가을, 겨울은 자연스럽게 하나씩 뒤로
  • 배열 요소 확인하기
    System.out.println(season.get(0));
    System.out.println(season.get(1));
    System.out.println(season.get(2));
    System.out.println(season.get(3));
  • 배열 길이 확인하기 (저장된 요소 갯수)
System.out.println(season.size());
  • 배열 길이 관련 (마지막 요소 꺼내기)
System.out.println(season.get(season.size() - 1)); //마지막 요소는 항상 size() -1 
  • 배열 for문 적용하기
    for (int i = 0; i < season.size(); i++) {
      System.out.println(season.get(i));
    }
    //배열 for문 적용하기 (리팩토링 : season.size() 메소드가 여러번 호출되는 문제 해결
    for (int i = 0, length = season.size(); i < length; i++) {
      System.out.println(season.get(i));

  • 배열을 ArrayList로 바꾸기
    Integer[] a = { 10, 20, 30, 40, 50 };
    List<Integer> numbers = Arrays.asList(a);

    // 주의!! 초기화된 ArrayList는 길이를 변경할 수 없음
    //    numbers.add(60); // 불가능
    // numbers.remove(0); //불가능

    // for문
    for (int i = 0, length = numbers.size(); i < length; i++) {
      System.out.println(numbers.get(i));

Set

  1. 인덱스가 없다. 저장 순서가 없다
  2. 중복 저장이 되지 않는다
  • HashSet 선언 & 생성
    Set<String> hobbies = new HashSet<String>();
  • 요소 저장하기
    hobbies.add("독서");
    hobbies.add("요리");
    hobbies.add("운동");
    hobbies.add("체스");
  • for문 활용하기 (인덱스가 없으므로 향상 for문)
    for (String hobby : hobbies) {
      System.out.println(hobby);
    }
  • 반복자 Iterator를 이용한 Set 순회
    Iterator<String> arm = hobbies.iterator(); //hobbies set에 넣을 수 있는 arm

    // 조건 : arm.hasNext()
    // 실행 : System.out.println(arm.next());
    while (arm.hasNext()) {
      System.out.println(arm.next());
    }

0개의 댓글