1. 데이터 변환

Stream<T>클래스에는 데이터를 한 유형에서 다른 유형으로 변환할 수 있는 메서드도 있습니다. 이 방법은 map().

또한 스트림을 반환하지만 다른 유형의 요소가 있습니다. 이 map()메서드는 한 데이터 형식을 다른 데이터 형식으로 변환하는 함수를 메서드 인수로 사용합니다.

예:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map((x) -> String.valueOf(x));
스트림을 스트림 Integer으로 변환String

메서드 에 전달된 함수 인수는 map()숫자를 사용 x하고 해당 문자열 표현을 반환합니다. 그런데 이 코드를 더 간결하게 작성할 수 있습니다.

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
스트림을 스트림 Integer으로 변환String

문자열을 숫자로 변환

마찬가지로 문자열을 숫자로 변환하는 코드를 작성할 수 있습니다. 이 역시 복잡하지 않습니다.

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Stream<Integer> stream3 = stream2.map(Integer::parseInt);
스트림을 스트림 String으로 변환Integer

문자열을 a로 변환URI

데이터 변환 작업은 리소스와 시간이 많이 소요될 수 있습니다. 문자열 모음을 URI 객체로 변환하고 싶다고 가정해 보겠습니다. URI 생성자가 문자열을 인수로 사용하기 때문에 이것은 매우 쉽습니다.

ArrayList<String> list = new ArrayList<String>();
list.add("https://google.com");
list.add("https://linkedin.com");
list.add("https://yandex.com");

Stream<URI> stream = list.stream().map( URI::new );
스트림을 스트림 String으로 변환URI

컬렉션을 만들고 3개의 웹 주소로 채웠습니다. Stream<String>그런 다음 컬렉션에서 객체를 얻었고 그 스트림에서 Stream<URI>객체를 얻었습니다. 각 문자열을 URI로 변환하는 데 사용할 메서드에 대한 참조를 map 메서드에 전달했습니다.

String이 메소드(생성자)는 인수로 a를 취해야 합니다 . 모든게 완벽해 보이는데...


2. 예외

위의 코드가 작동할 것으로 예상할 수 있지만 작동하지 않습니다. 프로그램이 컴파일되지 않습니다. 그리고 우리가 어디선가 실수를 했기 때문이 아니라 Java 제작자가 엉망이 되었기 때문입니다.

옛날 옛적에 그들은 클래스 생성자 URISyntaxException에 확인된 예외( ) 를 추가하는 기발한 아이디어를 가지고 있었습니다 URI! 그리고 그러한 예외는 try-catch.

따라서 코드의 마지막 줄은 다음과 같습니다.

Stream<URI> stream = list.stream().map(str ->
{
  try
  {
     return new URI(str);
  }
  catch (URISyntaxException e)
  {
     e.printStackTrace();
     return null;
  }
});

우리는 무엇을 말할 수 있습니까? 확인된 예외를 사용하기 전에 두 번 생각해야 합니다 . 생성자에서 사용하기 전에 세 번 생각하십시오.