Java 8 스트림을 어레이로 변환하는 방법
8 Java 8 을 가장 짧은 방법은 입니까?Stream
열할할 수???
은 '우리'를 입니다.toArray(IntFunction<A[]> generator)
배열 생성자 참조가 있는 메서드.이는 메서드의 API 문서에서 권장됩니다.
String[] stringArray = stringStream.toArray(String[]::new);
인수로 a를 입니다.String[]
중 ) 바로 입니다.new String[]
도 있습니다.IntFunction
:
Stream<String> stringStream = ...;
String[] stringArray = stringStream.toArray(size -> new String[size]);
「IntFunction<A[]> generator
는 배열 크기인 정수를 새 배열로 변환하는 것입니다.
코드 예:
Stream<String> stringStream = Stream.of("a", "b", "c");
String[] stringArray = stringStream.toArray(size -> new String[size]);
Arrays.stream(stringArray).forEach(System.out::println);
인쇄:
a
b
c
배열을 는, 1 ~10 의 int 에서합니다.Stream<Integer>
.IntStream
마음대로 쓰세요.
, 이렇게 '만들다'를 만들어요.Stream
a Stream.of
합니다.Stream<Integer>
IntStream
, 「」의mapToInt
IntStream
의 »toArray
★★★★★★ 。
Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9,10);
//or use this to create our stream
//Stream<Integer> stream = IntStream.rangeClosed(1, 10).boxed();
int[] array = stream.mapToInt(x -> x).toArray();
'없으면 안 된다'는 .Stream<Integer>
만)IntStream
:
int[]array2 = IntStream.rangeClosed(1, 10).toArray();
다음 간단한 코드 블록을 사용하여 Java 8 스트림을 배열로 변환할 수 있습니다.
String[] myNewArray3 = myNewStream.toArray(String[]::new);
더 자세히 설명하겠습니다.먼저 다음 세 가지 값으로 채워진 문자열 목록을 만듭니다.
String[] stringList = {"Bachiri","Taoufiq","Abderrahman"};
지정된 어레이에서 스트림을 만듭니다.
Stream<String> stringStream = Arrays.stream(stringList);
이제 이 스트림에서 몇 가지 작업을 수행할 수 있습니다. 예:
Stream<String> myNewStream = stringStream.map(s -> s.toUpperCase());
마지막으로 다음 방법을 사용하여 Java 8 Array로 변환합니다.
1-클래식 방식(기능 인터페이스)
IntFunction<String[]> intFunction = new IntFunction<String[]>() {
@Override
public String[] apply(int value) {
return new String[value];
}
};
String[] myNewArray = myNewStream.toArray(intFunction);
2 - 람다 발현
String[] myNewArray2 = myNewStream.toArray(value -> new String[value]);
3- 방법 참조
String[] myNewArray3 = myNewStream.toArray(String[]::new);
방법 참조 설명:
람다 표현식을 쓰는 또 다른 방법으로, 람다 표현식은 엄밀하게 다른 표현과 동일합니다.
각 값을 쉼표로 구분하는 문자열 배열로 텍스트를 변환하고 모든 필드를 잘라냅니다. 예를 들어 다음과 같습니다.
String[] stringArray = Arrays.stream(line.split(",")).map(String::trim).toArray(String[]::new);
스트림을 어레이로 변환하는 사용자 지정 수집기를 생성할 수 있습니다.
public static <T> Collector<T, ?, T[]> toArray( IntFunction<T[]> converter )
{
return Collectors.collectingAndThen(
Collectors.toList(),
list ->list.toArray( converter.apply( list.size() ) ) );
}
빠른 사용
List<String> input = Arrays.asList( ..... );
String[] result = input.stream().
.collect( CustomCollectors.**toArray**( String[]::new ) );
「 」의 toArray(IntFunction<A[]> generator)
방법은 스트림을 동일한 유형의 스트림 배열로 변환(또는 더 정확히는 수집)하는 매우 우아하고 안전한 방법입니다.
된 어레이의 하지 않은 에는 " " "를 합니다.toArray()
방법은 쉽고 짧습니다.예를 들어 다음과 같습니다.
Stream<Object> args = Stream.of(BigDecimal.ONE, "Two", 3);
System.out.printf("%s, %s, %s!", args.toArray());
import java.util.List;
import java.util.stream.Stream;
class Main {
public static void main(String[] args) {
// Create a stream of strings from list of strings
Stream<String> myStreamOfStrings = List.of("lala", "foo", "bar").stream();
// Convert stream to array by using toArray method
String[] myArrayOfStrings = myStreamOfStrings.toArray(String[]::new);
// Print results
for (String string : myArrayOfStrings) {
System.out.println(string);
}
}
}
온라인으로 시험해 보세요.https://repl.it/@SmaMa/Stream-to-Array
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
int[] arr= stream.mapToInt(x->x.intValue()).toArray();
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
Integer[] integers = stream.toArray(it->new Integer[it]);
수집기를 이렇게 사용할 수 있습니다.
Stream<String> io = Stream.of("foo" , "lan" , "mql");
io.collect(Collectors.toCollection(ArrayList<String>::new));
언급URL : https://stackoverflow.com/questions/23079003/how-to-convert-a-java-8-stream-to-an-array
'programing' 카테고리의 다른 글
VueJs의 구성 요소에 개체 또는 개체 키 전달 (0) | 2022.07.17 |
---|---|
Java8 lamda를 사용하여 스트림을 역순으로 정렬하려면 어떻게 해야 합니까? (0) | 2022.07.17 |
Java에서 InputStream을 바이트 배열로 변환 (0) | 2022.07.17 |
단일 vuej 프로젝트에서 여러 소켓을 연결하는 방법 (0) | 2022.07.16 |
vue-tables-2 모듈에서 ROW_CLICK 이벤트를 처리하는 방법(vuex) (0) | 2022.07.16 |