본문 바로가기
알고리즘 문제 (백준저지)/기타

[java] String 배열을 int 배열로 바꾸는 방법

by 유헤 2019. 8. 22.

참고

https://zetawiki.com/wiki/%EC%9E%90%EB%B0%94_String_%EB%B0%B0%EC%97%B4%EC%9D%84_int_%EB%B0%B0%EC%97%B4%EB%A1%9C_%EB%B3%80%ED%99%98

 

자바 String 배열을 int 배열로 변환 - 제타위키

다음 문자열 포함...

zetawiki.com

에서 했습니다.

 

알고리즘을 풀던 중, String 형태로 저장해뒀다가 split(",") 써서 String[] (String배열) 형태로 담아두고

반환값은 int[] 으로 반환되는 경우가 있습니다..

이게 할 수는 있는데 정말 귀찮고 골치 아픈 일이라 한번 검색을 해봤습니다.

 

역시나!

방법이 나와있더라구요.

Stream을 이용해서 해결하였습니다.

 

String[] strings = {"1", "2", "3"};

  int[] nums = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();

String[] strings = {"1", "2", "3"};

 int[] nums = Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();


스트림 Streams

자바 8에서 추가한 스트림(Streams)은 람다를 활용할 수 있는 기술 중 하나입니다. 자바 8 이전에는 배열 또는 컬렉션 인스턴스를 다루는 방법은 for 또는 foreach 문을 돌면서 요소 하나씩을 꺼내서 다루는 방법이었습니다. 간단한 경우라면 상관없지만 로직이 복잡해질수록 코드의 양이 많아져 여러 로직이 섞이게 되고, 메소드를 나눌 경우 루프를 여러 번 도는 경우가 발생합니다.

스트림은 '데이터의 흐름’입니다. 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있습니다. 또한 람다를 이용해서 코드의 양을 줄이고 간결하게 표현할 수 있습니다. 즉, 배열과 컬렉션을 함수형으로 처리할 수 있습니다.

또 하나의 장점은 간단하게 병렬처리(multi-threading)가 가능하다는 점입니다. 하나의 작업을 둘 이상의 작업으로 잘게 나눠서 동시에 진행하는 것을 병렬 처리(parallel processing)라고 합니다. 즉 쓰레드를 이용해 많은 요소들을 빠르게 처리할 수 있습니다.


스트림의 주요 기능

 

메소드명 

설명 

 of

 지정된 값으로부터 Stream 생성 

 count

 Stream의 요소의 수를 반환 

 distinct

 Stream의 요소의 중복 제거 

 forEach

 Stream의 요소에 대한 반복 

 filter

 Stream의 요소에 대한 필터링 

 concat

 2개의 Stream을 연결 

 map

 Stream의 요소를 변환 

 mapToDouble

 Stream의 요소를 double형으로 변환해 DoubleStream 반환 

 mapToInt

 Stream의 요소를 int형으로 변환해 IntStream으로 반환

 mapToLong

 Stream의 요소를 long형으로 변환해 LongStream으로 반환

 floatMap

 Stream의 요소를 변환하고 요소를 정리

 allMatch

 Stream의 모든 요소가 조건을 충족하는지 확인

 anyMatch

 Stream의 요소가 1개라도 충족하는지 확인

 noneMatch

 Stream의 모든 요소가 충족하지 않는지 확인

 reduce

 Stream의 요소 집계

 sum

 Stream의 요소 합계

 sorted

 Stream의 요소 정렬

 collect

 Stream 요소의 집계 처리와 컬렉션 변환 등

 toArray

 Stream을 배열로 변환

 iterate

 무한값을 반환하는 Stream 생성

 limit

 지정한 건수만큼 반환

 parallelStream

 순차처리 Stream을 병렬 처리할 수 있는 Stream을 구함

 sequential

 병렬 처리가 가능한 Stream을 순차처리 Stream으로 구함


Stream 형태를 배열로 변환 할 경우, toArray로 쓰시면 됩니다.

IntStream으로 되어 있으므로, toArray를 할 경우 int형태의 배열이 생성 됩니다.

 



참고자료

https://aljjabaegi.tistory.com/397

 

Java 8 Stream 을 사용해보자. About Stream in collection of java8

Java 8 Stream 을 사용해보자. About Stream in collection of java8 Java 8 버전 부터 컬렉션 프레임워크에 Stream 인터페이가 추가되었습니다. 이를 사용해 컬렉션 데이터의 변환, 필터링, 집계등의 처리를 간결..

aljjabaegi.tistory.com

https://futurecreator.github.io/2018/08/26/java-8-streams/

 

Java 스트림 Stream (1) 총정리

이번 포스트에서는 Java 8의 스트림(Stream)을 살펴봅니다. 총 두 개의 포스트로, 기본적인 내용을 총정리하는 이번 포스트와 좀 더 고급 내용을 다루는 다음 포스트로 나뉘어져 있습니다. Java 스트림 Stream (1) 총정리 Java 스트림 Stream (2) 고급 살펴볼 내용 이번 포스트에서 다루는 내용은 다음과 같습니다. 아는 내용

futurecreator.github.io