Java 스트림 toArray ()는 특정 유형의 배열로 변환
아마도 이것은 매우 간단하지만 실제로 Java 8 기능에 대한 멍청한 사람이고 이것을 수행하는 방법을 모릅니다. 다음 텍스트가 포함 된 간단한 줄이 있습니다.
"키, 이름"
각 값을 쉼표 (,)로 구분하여 해당 줄을 String 배열로 변환하고 싶지만 최종 배열을 반환하기 전에 모든 필드를 잘라 내고 싶으므로 다음을 수행했습니다.
Arrays.stream(line.split(",")).map(String::trim).toArray();
그러나 이것은 String [] 배열이 아닌 Object [] 배열을 리턴합니다. 추가 검사를 통해 내용이 실제로 String 인스턴스임을 확인할 수 있지만 배열 자체는 Object 요소입니다. 이것을 설명하겠습니다. 이것은 디버거가 반환 된 객체에 대해 말하는 것입니다.
Object[]:
0 = (String) "Key"
1 = (String) "Name"
내가 알 수있는 한 문제는 맵 호출의 반환 유형에 있지만 String [] 배열을 반환하려면 어떻게해야합니까?
사용 toArray(size -> new String[size])또는 toArray(String[]::new).
String[] strings = Arrays.stream(line.split(",")).map(String::trim).toArray(String[]::new);
이것은 실제로 람다 식입니다.
.toArray(new IntFunction<String[]>() {
@Override
public String[] apply(int size) {
return new String[size];
}
});
배열을 동일한 크기의 문자열 배열로 변환하십시오.
로부터 문서
생성기 함수는 원하는 배열의 크기 인 정수를 사용하여 원하는 크기의 배열을 생성합니다. 이것은 배열 생성자 참조로 간결하게 표현할 수 있습니다.
Person[] men = people.stream()
.filter(p -> p.getGender() == MALE)
.toArray(Person[]::new);
유형 매개 변수 :
A-결과 배열의 요소 유형
매개 변수 :
생성기-원하는 유형과 제공된 길이의 새 배열을 생성하는 함수
String[]::new호출하는 기능입니다 new은 "의사 방법" String[]처럼 타입을 String::trim함수입니다 호출하는 실제 trim문자열 유형의 방법. String::newtoArray에 의해 함수에 전달 된 값 은 .toArray () 메서드 호출의 오른쪽에있는 컬렉션의 크기입니다.
당신이 교체 한 경우 String[]::new에 n->new String[n]당신이 대체 할 수있는 것처럼 구문 더 편안 수 있습니다 String::trim덜 시원한으로s->s.trim()
참고 URL : https://stackoverflow.com/questions/40902315/java-stream-toarray-convert-to-a-specific-type-of-array
'Program Club' 카테고리의 다른 글
| Pandas 데이터 프레임을 시리즈로 변환 (0) | 2020.11.27 |
|---|---|
| MockMvc를 SpringBootTest와 함께 사용하는 것과 WebMvcTest를 사용하는 것의 차이점 (0) | 2020.11.27 |
| React JS index.js 파일이 id 참조를 위해 index.html에 연결하는 방법은 무엇입니까? (0) | 2020.11.27 |
| React Router를 사용하여 페이지를 리디렉션하는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.27 |
| C #의 코드로 네트워크 설정 (IP 주소, DNS, WINS, 호스트 이름)을 어떻게 변경할 수 있습니까? (0) | 2020.11.27 |