✏️오늘의 문제 : 정수를 담고 있는 배열 arr의 평균값을 return하는 함수 만들기
public double solution(int[] arr) {
double answer = 0;
for(int i=0; i<arr.length;i++){
answer+=arr[i];
}
return answer/arr.length;
}
반복문을 이용해 배열의 값을 모두 더한 후 배열의 크기로 나누어주었습니다.
public double solution(int[] arr) {
double answer = 0;
for(int i : arr) {
answer+=i;
}
return answer/arr.length;
}
처음 작성했던 풀이에서 for문의 형식을 바꾸어 보았습니다.
public int getMean(int[] array) {
return (int) Arrays.stream(array).average().orElse(0);
}
Arrays.stream(array)
: 주어진 배열 array
를 스트림으로 변환합니다. 이 스트림은 배열의 요소들을 처리할 수 있게 해줍니다..average()
: 스트림의 평균값을 계산합니다. 이 메서드는 OptionalDouble
을 반환합니다. 이는 평균값이 존재할 경우 그 값을 포함하고, 배열이 비어 있을 경우에는 아무 값도 포함하지 않습니다..orElse(0)
: 평균값이 존재하지 않을 경우(즉, 배열이 비어 있는 경우) 기본값으로 0
을 반환합니다.(int)
: OptionalDouble
에서 반환된 평균값을 정수형으로 형변환(casting)하여 반환합니다. 현대 소프트웨어 개발에서 데이터 처리는 매우 중요한 요소입니다. 자바는 이러한 데이터 처리를 보다 간편하고 효율적으로 할 수 있도록 지원하는 스트림(Stream) API를 제공합니다. 이번 포스팅에서는 자바의 스트림에 대해 자세히 알아보고, 생성 방법, 활용 방법, 그리고 장점에 대해 소개하겠습니다.
자바의 스트림은 연속적인 데이터 흐름을 다루는 추상화된 개념입니다. 자바 8에서 도입된 스트림 API는 컬렉션 프레임워크의 데이터를 처리하기 위한 인터페이스로, 데이터를 필터링, 변환, 집계하는 등의 작업을 간편하게 수행할 수 있게 해줍니다. 스트림은 데이터를 변경하지 않고, 데이터의 흐름을 조작하는 데 중점을 둡니다.
자바에서 스트림을 생성하는 방법은 다양합니다. 다음은 스트림을 생성하는 몇 가지 주요 방법입니다.
import java.util.Arrays;
import java.util.List;
public class StreamFromCollection {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream() // 스트림 생성
.forEach(System.out::println);
}
}
import java.util.Arrays;
public class StreamFromArray {
public static void main(String[] args) {
String[] fruits = {"Apple", "Banana", "Cherry"};
Arrays.stream(fruits) // 배열에서 스트림 생성
.forEach(System.out::println);
}
}
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class StreamFromFile {
public static void main(String[] args) {
try {
Files.lines(Paths.get("example.txt")) // 파일에서 스트림 생성
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.util.stream.IntStream;
public class StreamFromRange {
public static void main(String[] args) {
IntStream.range(1, 6) // 1부터 5까지의 정수 스트림 생성
.forEach(System.out::println);
}
}
자바에서 스트림을 사용하는 방법은 매우 간단합니다. 기본적인 예제를 통해 스트림의 활용 방법을 소개하겠습니다.
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
names.stream()
.filter(name -> name.startsWith("A"))
.forEach(System.out::println); // Alice
}
}
import java.util.Arrays;
import java.util.List;
public class StreamSumExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.mapToInt(Integer::intValue)
.sum();
System.out.println("Sum: " + sum); // Sum: 15
}
}
parallelStream()
메서드를 사용하면 데이터를 여러 스레드에서 동시에 처리할 수 있어 성능을 극대화할 수 있습니다.