카테고리 없음
자바 람다 쓰레드 문제 푼거 정리
from-alien
2023. 7. 21. 15:25
▶ 스트림으로 평균 구하기
package Stream;
import java.util.Arrays;
import java.util.List;
public class exc_1 {
public static void main(String[] args) {
List<Integer> lst = Arrays.asList(1,2,3,4,5,6);
Integer avg = (int) lst.stream()
.mapToInt(Integer::intValue)
.average().orElse(0);
System.out.println(avg);
double average = lst.stream()
.mapToDouble(Integer::doubleValue)
.average()
.orElse(0.0);
System.out.println(average);
}
}
▶ 스트림으로 대문자 소문자
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class exc_2 {
public static void main(String[] args) {
List<String> lst = Arrays.asList("db","os","DataStrucTure");
lst.replaceAll(str -> str.toLowerCase());
lst.forEach(System.out::println);
lst.replaceAll(str -> str.toUpperCase());
lst.forEach(System.out::println);
System.out.println("-----sol---------------------");
List < String > colors = Arrays.asList("RED", "grEEn", "white", "Orange", "pink");
List<String> uppercaseStrings = colors.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(uppercaseStrings);
System.out.println("----------------------------------");
List<String> lowercaseStrings = colors.stream()
.map(String::toLowerCase)
.collect(Collectors.toList());
System.out.println(lowercaseStrings);
}
}
▶ 스트림으로 짝수 홀수의 합을 구하기
import java.util.Arrays;
import java.util.List;
public class exc_3 {
public static void main(String[] args) {
List<Integer> lst = Arrays.asList(
1,2,3,4,5,6
);
int sum_of_even =lst.stream().filter(num ->num %2==0)
.reduce(0,Integer::sum);
System.out.println(sum_of_even);
int sum_of_odd = lst.stream()
.filter(num -> num %2 !=0)
.reduce(0,Integer::sum);
System.out.println(sum_of_odd);
int sumOfEvens = lst.stream()
.filter(num -> num % 2 == 0)
.mapToInt(Integer::intValue)
.sum();
System.out.println("Sum of even numbers: " + sumOfEvens);
// Sum of odd numbers
int sumOfOdds = lst.stream()
.filter(num -> num % 2 != 0)
.mapToInt(Integer::intValue)
.sum();
System.out.println("Sum of odd numbers: " + sumOfOdds);
}
}
▶ 스트림으로 중복되는 수 제거
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class exc_4 {
public static void main(String[] args) {
List<Integer> lst = Arrays.asList(
1,2,3,3,3,4,4,5
);
lst.stream().distinct().forEach(System.out::println);
List < Integer > nums = Arrays.asList(10, 23, 22, 23, 24, 24, 33, 15, 26, 15);
System.out.println("Original List of numbers: " + nums);
// Remove duplicates
List < Integer > distinctNumbers = nums.stream()
.distinct()
.collect(Collectors.toList());
System.out.println("After removing duplicates from the said list: " + distinctNumbers);
}
}
▶ 스트림으로 특정 문자 시작하는 것을 찾는 코드
import java.util.Arrays;
import java.util.List;
public class exc_5 {
public static void main(String[] args) {
List < String > colors = Arrays.asList("Red", "Green", "Blue", "Pink", "Brown");
System.out.println("Original list of strings (colors): " + colors);
char startingLetter = 'B';
// Count strings starting with a specific letter
long ctr = colors.stream()
.filter(s -> s.startsWith(String.valueOf(startingLetter)))
.count();
System.out.println("\nNumber of colors starting with '" + startingLetter + "': " + ctr);
char startingLetter1 = 'Y';
// Count strings starting with a specific letter
ctr = colors.stream()
.filter(s -> s.startsWith(String.valueOf(startingLetter1)))
.count();
System.out.println("\nNumber of colors starting with '" + startingLetter1 + "': " + ctr);
}
}
▶ 스트림으로 알파벳 오름차순 반대로 알파벳 내림차순 정렬
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class exc_6 {
public static void main(String[] args) {
List<String> lst = Arrays.asList("a" ,"b", "c","z","r");
lst.stream()
.sorted()
.collect(Collectors.toList()).forEach(System.out::println);
System.out.println("--------------------------------------------------");
lst.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList()).forEach(System.out::println);
List < String > colors = Arrays.asList("Red", "Green", "Blue", "Pink", "Brown");
System.out.println("Original List of strings(colors): " + colors);
// Sort strings in ascending order
List < String > ascendingOrder = colors.stream()
.sorted()
.collect(Collectors.toList());
// Sort strings in descending order
List < String > descendingOrder = colors.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
System.out.println("\nSorted in Ascending Order: " + ascendingOrder);
System.out.println("\nSorted in Descending Order: " + descendingOrder);
}
}
▶ 스트림으로 가장 큰 값과 작은 값 찾는 방법
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class exc_7 {
public static void main(String[] args) {
List<Integer> lst = Arrays.asList(1,2,3,4,5,5,6,10);
int max_num =lst.stream().distinct().max(Integer::max).orElse(0);
System.out.println(max_num);
int min_num = lst.stream().distinct().min(Integer::min).orElse(0);
System.out.println(min_num);
List < Integer > nums = Arrays.asList(1, 17, 54, 14, 14, 33, 45, -11);
System.out.println("Original list of numbers: " + nums);
// Find the maximum value
Integer max_val = nums.stream()
.max(Integer::compare)
.orElse(null);
// Find the minimum value
Integer min_val = nums.stream()
.min(Integer::compare)
.orElse(null);
System.out.println("\nMaximum value of the said list: " + max_val);
System.out.println("\nMinimum value of the said list: " + min_val);
}
}
▶ 스트림으로 두번째로 가장 큰 값과 작은 값찾는 방법
import java.util.Arrays;
import java.util.List;
public class exc_8 {
public static void main(String[] args) {
List<Integer> lst = Arrays.asList(1,2,3,4,4,5,6,7,7,10);
int secondSmallest = lst.stream()
.sorted()
.skip(1)
.findFirst()
.orElse(-1);
System.out.println(secondSmallest);
int secondLargest = lst.stream()
.sorted((a,b) -> b -a)
.skip(1)
.findFirst()
.orElse(-1);
System.out.println(secondLargest);
List < Integer > nums = Arrays.asList(1, 17, 54, 14, 14, 33, 45, -11);
System.out.println("List of numbers: " + nums);
// Find the second smallest element
Integer scdSmallest = nums.stream()
.distinct()
.sorted()
.skip(1)
.findFirst()
.orElse(null);
// Find the second largest element
Integer scdLargest = nums.stream()
.distinct()
.sorted((a, b) -> Integer.compare(b, a))
.skip(1)
.findFirst()
.orElse(null);
System.out.println("\nSecond smallest element: " + scdSmallest);
System.out.println("\nSecond largest element: " + scdLargest);
}
}