JAVA/Bootcamp 자바

Collection Framework API - Wrapped, parseInt, ArrayList, HashSet, Map

whyHbr 2024. 3. 17. 15:26
728x90
반응형

자바 컬렉션 프레임 워크 Collection Framework API 란, 자바에서 제공하는 데이터 구조인  컬렉션 collection을 표현하는 인터페이스와 클래스의 모음(API)이다

 

Wrapper 란,

 기본 자료형을 객체로 바꿔준다. 왜 바꿔야할까?
컬렉션 프레임 워크는 객체 자료형을 사용하기 때문에 기본 자료형을 사용할 수 없다. 

 

앞문자만 대문자로 쓰면 된다 

int a = 10; //기본 자료형

-> Interger a = 10; Integer a = new Integer(10); // 둘 다 사용 가능, 객체라 new를 사용한다.  auto boxing 

sout(a.intValue()); //unboxing

 

Integer b =10; //auto boxing

int bb = b; // auto unboxing. 포장 해제.

 

public class WrapperTest {
    public static void main(String[] args) {
        // int a = 10; 기본 자료형
        //Integer a = new Integer(10); //사용자 자료형, 객체라 new 사용
        Integer a =10; //이것도 가능하다. auto boxing
        System.out.println(a.intValue()); //unboxing

        Integer b = 20; //integer로 들어갈 떈 포장auto boxing
        int bb =b; //auto unboxing 포장 해제

        float f = 23.3f;
        Float f2 = 44.4f; //new Float(); 이것을 auto boxing
        System.out.println(f2.floatValue());

        Float f3 = 33.3f;
        float f4 = f3; // f3.floatValue() 내부에서 발생 -> auto boxing
        System.out.println(f4);
        System.out.println(f3.floatValue());
    }
}

 

숫자와 문자열의 상호 변환

 

public class IntegerStringTest {
    public static void main(String[] args) {
        String str ="123";
        String str2 = "123";
        System.out.println(str+str2); //123123 덧셈이 아니라 결합
        int num = Integer.parseInt(str) +Integer.parseInt(str2);
        System.out.println(num);

        int su = 123;
        int su2 = 123;
        //su1+su2 = 246
        System.out.println(su+ su2);

        String sum= String.valueOf(su) +String.valueOf(su2);
        System.out.println(sum);
        String sum2 = su+""+su;
        System.out.println(sum2);
    }
}

 

숫자형 문자를 정수형으로 변환하려면 -> Integer.parseInt()

String a = "123";

int aa = Integer.parseint(a);

 

정수를 문자열로 변환하려면 ->  String.value(); or  " " + num

int num =123;

String numString = String.value(num);

String numString2 = "" + num;

 

 

 

Collection Framework API

 

 

순서가 있고 중복이 가능한

ListAPI

 

public class MovieListExample {
    public static void main(String[] args) {
        ArrayList<MovieDTO> movie = new ArrayList<>();
        movie.add(new MovieDTO("title1",200));
        movie.add(new MovieDTO("2title",120));

       for( MovieDTO m : movie){
            System.out.println(m);
       }

        System.out.println();

       String searchTitle = "title1"; //영화 제목 찾기
       for( MovieDTO m : movie){
           if( m.getTitle().equals(searchTitle)){
               System.out.println(m.getTitle());
               break;
           }
       }
    }
}

ArrayList<Movie> movie = new ArrayList<>(); //객체 생성

movie.add(new Movie() ); //을 통해 데이터 넣음

 

foreach문을 통해 데이터를 출력

 

searchTitle을 통해 title1인 영화 제목을 찾는다.

MovieDTO m과 movie를 비교해가며

if 만약, m의 타이틀에( m.getTitle() ) serachTitle과 같은 제목이 있다면( .equals(searchTitle())

출력한다. sout (m.getTitle());

출력하고 탈출 break;

 

 

순서가 있고 중복이 불가능한 Set API : Hash Set

public class UniqueNumbers {
    public static void main(String[] args) {
        int[] numbers={1,2,3,4,5,6,7,1,2,9};
        Set<Integer> uniqueNums = new HashSet<>();

        for(int num : numbers){
            uniqueNums.add(num);
        }

        System.out.println("unique numbers :");
        for(int num : uniqueNums){
            System.out.println(num);
        }
    }
}

중복없이 출력해준다 hashset

 

 

 

Key Value 로 관리하는  Map API

키는 중복이 안된다. 

오토 박싱으로 인해 value 값이 바로 int로 들어간다.

 

get으로 조회한다.

System.out.println("Kim.s score: " + stdScores.get("Kim"));;

 

put은 두가지 기능이 있다. 있다면 수정, 없다면 추가

stdScores.put("Kim",96);

 

키 값만 모아지는 것이 entrySet(). 여기서 하나 꺼내기 -> entry<String, Integer> 

-> map안에 있는 인터페이스이므로, map.entry<String, Integer> 이렇게 꺼내야 한다.

 

entry,getKey 와 getValue()로 값을 출력한

728x90