본문 바로가기
BACK-END/Java

[JAVA] 컬렉션과 배열들 간 자료형 바꾸는 방법

by 로햐 2022. 4. 3.

Collection을 Array로

Collection명.toArray();

Array를 List로

Arrays.asList(Array명)
new ArrayList<>(Arrays.asList(Array명))
Collectors.toList(Array명)
Arrays.stream(Array명).collect(Collectors.toList())

List를 Set으로

생성자에 넣어주기
Stream 이용 : Set set = Arrays.stream(Array명).collect(Collectors.toSet());
Set.copyOf(list명) : Java 10 이후, 불변 ->값 변경하려고 하면 Exception 발생

Set을 List로

생성자에 넣어주기
List.copyOf(set명) : Java 10 이후, 불변 ->값 변경하려고 하면 Exception 발생

Map을 List로

맵의 키 값만 Set으로 반환

map.keySet()

맵의 밸류 값만 Collection으로 반환

map.values()


IntStream

-> java.util.stream 패키지에 스트림 관련 API
java.util.stream.IntStream
파이썬의 range같은 느낌인가?
IntStream.range(1,5);

int sum = widgets.stream()
                      .filter(w -> w.getColor() == RED)
                      .mapToInt(w -> w.getWeight())
                      .sum();
//mapToInt 사용하면 해당

https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html

https://dev-kani.tistory.com/32


마크다운 진짜 편하다
https://docs.oracle.com/javase/8/docs/api/overview-summary.html
도 좀 더 읽어보기!!
변환 방법이 많은 애들은 그 차이가 뭔지 좀 더 살펴보자 속도나 효율성이나 뭔가 차이가 있을것같긴함

구글의 자바 라이브러리인 Guava도 존재(https://github.com/google/guava)

이걸 찾아보게 된 이유가

Set을 자주 사용하는데 변환이 좀 번거로워서

그런데 중복제거하는 좋은 방법도 알게되었다!

collection명.stream().distinct().collect(Collectors.toList());

저번 프로젝트때 자바스크립트에서 중복 제거하려고 set에 넣었다가 list로 변환하는 작업을 거쳤는데, 이건 자바라 사용 못했겠지만... 자바는 이렇게 해결할 수 있는 방법이 있었다!

그리고 Iterator 자꾸 생소하다고 잘 안 안쓰는 경향이 있는데 잘 써보자!

 

java 8 이후에 사용 가능한 forEach메소드도 신기했음

Iterable 인터페이스의 메소드

HashSet<String> keywords = new HashSet<>();
keywords.add("Hello");
keywords.add("world");

//이 두개가 동일하게 작동하는듯
for(String str:keywords){
    System.out.println(str);
}

keywords.forEach(System.out::println);

//만약 keywords가 맵이라면 이런 식으로 사용 가능
//keywords.forEach((key, value) -> System.out.println(key + " : " + value));

forEach안에는 람다식으로 기술한다고함

 

Collection을 배열로 변경하면 Object[]으로 반환되어 형변환 필요함!

'BACK-END > Java' 카테고리의 다른 글

[JDBC] Servlet Filter  (0) 2022.02.16
[JAVA] Sevlet, JSP  (1) 2022.01.16
[JAVA] API-JDBC  (1) 2021.12.07
[Java] API-Stream(Input & Output)  (0) 2021.11.25
[Java] API-Collection과 Map  (0) 2021.11.23