자바 공부 6 : 자료형 - 리스트

친환경 개발자
|2024. 1. 21. 16:36

리스트

- 배열과 다르게 크기가 변할 수 있다. 크기가 정해져 있지 않을 때 사용

 

- 종류 :  ArrayList(대표형), Vector, LinkedList 등

 

* 시작하기 전에 패키지 꺼내기!

   import java.util.ArrayList;

   import java.util.Array;

   import java.util.List;

 

- 주로 사용하는 메서드

add : 값 추가

get : 특정 인덱스의 값 추출

size : 요소의 개수 리턴

contains : 해당 리스트에 특정 값이 존재하는지 판별 (True / False)

remove(객체) : 리스트 내 해당 항목을 삭제하고 결과로 True / False 리턴

remove(인덱스) : 해당 인덱스 위치의 항목을 삭제하고, 삭제한 그 항목을 리턴

 

 

※ 제네릭스 : 자료형을 안전하게 사용할 수 있도록 만듦, 자료형을 강제로 바꿀 때 생길 수 있는 오류를 줄임

    <사용방식>

  ArrayList<String> ex1 = new ArrayList<>(); 

   :  해당 리스트에는 String 자료형만 담을 수 있다는 뜻으로 이해

 

 

 asList로 바로 리스트에 값 집어넣을 수 있음

    ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "122");

      : 138, 129, 122 값 바로 리스트에 담을 수 있음

 

 

- 리스트 정렬하기

import java.util.Comparator;   // Comparator 패키지 입력

.

.

pitches.sort(Comparator.naturalOrder());  // pitches 리스트를 오름차순으로 정렬

pitches.sort(Comparator.reverseOrder());  // pitches 리스트를 내림차순으로 정렬

 

 

 

 

       /*     03-7 리스트    */

        /* ArrayList */
        ArrayList pitches = new ArrayList();
        pitches.add("138"); // 리스트에 138값 추가
        pitches.add("129"); // 129값 추가
        pitches.add("142");

        // get
        System.out.println(pitches.get(1));  // 1번 인덱스의 값 추출
        System.out.println();

        // size
        System.out.println(pitches.size());  // 리스트에 담긴 인덱스 개수 출력
        System.out.println();

        //contains
        System.out.println(pitches.contains("1"));  // 1값이 포함되어있는지 ? False
        System.out.println(pitches.contains("142"));  // 142값이 포함되어있는지 ?  True
        System.out.println();

        // remove
        System.out.println(pitches.remove("142"));  //remove(객체) : 해당 객체를 지운 후 True/False 출력
        System.out.println(pitches);   // 삭제한 뒤 남은 리스트
        System.out.println(pitches.remove(0));  //remove(인덱스) : 해당 인덱스 위치의 항목을 지운 후 그 항목값을 출력
        System.out.println(pitches);
        System.out.println();

        /*   제네릭스 : 자료형 안전하게 사용할 수 있도록 함. 자료형 변환 시 캐스팅 오류 감소 */

        ArrayList pitches2 = new ArrayList();
        pitches2.add("123");
        pitches2.add("145");

        String one2 = (String) pitches2.get(0);  // (STring) 없으면 형변환 오류 발생
        String two2 = (String) pitches2.get(1);


        ArrayList<String> pitches3 = new ArrayList<>();
        pitches3.add("123");
        pitches3.add("145");

        String one3 = pitches3.get(0);   // 형변환 필요없음
        String two3 = pitches3.get(1);


        /*   ArrayList 만드는 다양한 방법 */
        // import java.util.Arrays; 입력
        String[] data = {"138", "152", "122"};  // data라는 배열 생성
        ArrayList<String> pitches4 = new ArrayList<>(Arrays.asList(data));  // asList 메서드 사용 : pitches4에 data리스트 입히기
        System.out.println(pitches4);

        ArrayList<String> pitches5 = new ArrayList<>(Arrays.asList("111", "112", "113"));  // 자료형값 직접 입력도 가능
        System.out.println(pitches5);
        System.out.println();


        /* String.join("구분자", 리스트 객체) : ArrayList의 각 요소를 콤마(,)로 구분하기 */

        // String.join 없이 콤마 넣기
        ArrayList<String> pitches6 = new ArrayList<>(Arrays.asList("111", "112", "113"));  // 자료형값 직접 입력도 가능
        System.out.println(pitches6);
        String result1 = "";

        for (int i = 0; i < pitches6.size(); i++){
            result1 += pitches6.get(i);
            result1 += ", "; // 콤마와 띄어쓰기를 추가한다
        }
        result1 = result1.substring(0, result1.length() - 2); // 마지막 콤마와 띄어쓰기 제거
        System.out.println(result1); // 111, 112, 113 출력

        // String.join 사용하기!!

        String result2 = String.join(", ", pitches6);
        System.out.println(result2);
        System.out.println();



        /* 리스트 정렬  */

        //import java.util.Comparator; 선언!
        pitches6.sort(Comparator.naturalOrder()); // 오름차순 정렬
        System.out.println("오름차순 = " + pitches6);
        pitches6.sort(Comparator.reverseOrder()); // 오름차순 정렬
        System.out.println("내림차순 = " + pitches6);