☕ Ex01.java
List<Integer> int0To9 = new ArrayList<>(
Arrays.asList(5, 2, 0, 8, 4, 1, 7, 9, 3, 6)
);
// 홀수만 골라낸 다음 정렬하여 "1, 3, 5..."와 같은 문자열로 만들어보기
// 기존의 방식
List<Integer> odds = new ArrayList<>();
for (Integer i : int0To9) {
if (i % 2 == 1) odds.add(i);
}
odds.sort(Integer::compare);
List<String> oddsStrs = new ArrayList<>();
for (Integer i : odds) {
oddsStrs.add(String.valueOf(i));
}
String oddsStr = String.join(", ", oddsStrs);
// ⭐ 스트림을 사용한 방식
// 각 라인이 무엇을 반환하는지 확인할 것
String oddsStrStreamed = int0To9
.stream()
.filter(i -> i % 2 == 1)
.sorted(Integer::compare)
.map(String::valueOf)
.collect(Collectors.joining(", "));
☕ Ex02.java
// 💡 배열로부터 생성
Integer[] integerAry = {1, 2, 3, 4, 5};
Stream<Integer> fromArray = Arrays.stream(integerAry);
Object[] fromArray_Arr = fromArray.toArray();
// ⚠️ 런타임 에러
// - 스트림은 한 번 사용하면 끝 (흘러가버린 물)
//Object[] ifReuse = fromArray.toArray();
// 원시값의 배열로부터는 스트림의 클래스가 달라짐
int[] intAry = {1, 2, 3, 4, 5};
IntStream fromIntAry = Arrays.stream(intAry);
int[] fromIntAry_Arr = fromIntAry.toArray();
double[] dblAry = {1.1, 2.2, 3.3};
DoubleStream fromDblAry = Arrays.stream(dblAry);
double[] fromDblAry_Arr = fromDblAry.toArray();