[JAVA][クイックキャンパス]フロー
18750 ワード
ストリーム(Stream)
作成して使用するストリームは、
ストリーム演算-中間演算
フロー演算-最終演算
package stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
//스트림연산
public class ArrayListStreamTest {
public static void main(String[] args) {
List<String> sList=new ArrayList<String>();
sList.add("Tomas");
sList.add("Edward");
sList.add("Jack");
Stream<String> stream=sList.stream();
stream.forEach(s->System.out.print(s+" "));
System.out.println();
//sorted에 의해 자동정렬됨
sList.stream().sorted().forEach(s->System.out.print(s+" "));
System.out.println();
sList.stream().map(s->s.length()).forEach(n->System.out.println(n));
}
}
reduce()演算
IntArrayTest.java
package stream;
import java.util.Arrays;
public class IntArrayTest {
public static void main(String[] args) {
int[] arr= {1,2,3,4,5};
int sum=Arrays.stream(arr).sum();
int count=(int)Arrays.stream(arr).count();
System.out.println(sum);
System.out.println(count);
//reduce를 이용한 모든요소의 합
System.out.println(Arrays.stream(arr).reduce(0, (a,b)->a+b));
}
}
ReduceTest.javapackage stream;
import java.util.Arrays;
import java.util.function.BinaryOperator;
class CompareString implements BinaryOperator<String>{
@Override
public String apply(String s1, String s2) {
if(s1.getBytes().length >= s2.getBytes().length)
return s1;
else return s2;
}
}
public class ReduceTest {
public static void main(String[] args) {
String[] greetings= {"안녕하세요---","hello","Good morning","반갑습니다"};
//문자열의 길이가 제일긴 문자열반환
System.out.println(Arrays.stream(greetings).reduce("",(s1,s2)->
{ if(s1.getBytes().length >= s2.getBytes().length)
return s1;
else return s2;
}));
//간단히 하려면 BinaryOperator인터페이스를 구현한 CompareString클래스를 만들어서 reduce로 출력하는 형식으로 만들면됨
System.out.println(Arrays.stream(greetings).reduce(new CompareString()).get());
}
}
Reference
この問題について([JAVA][クイックキャンパス]フロー), 我々は、より多くの情報をここで見つけました https://velog.io/@kjhabc2002/JAVA패스트캠퍼스스트림テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol