Arrays.stream(배열).filter(인자->인자 [조건]).toArray()
문제 : 주어진 배열의 인덱스를 나누고 싶은 숫자로 나누었을 때 나머지가 0인 인덱스만 추출하여 배열로 출력
int[] arr = {3,2,6};int divisor = 10;int[] res = null; res = Arrays.stream(arr).filter(idx -> idx % divisor == 0).toArray();Arrays.sort(res);if (res.length == 0) { res = new int[1]; res[0] = -1;}System.out.println(Arrays.toString(res));
int[] arr = {3,2,6}; int divisor = 10; int[] res = null; res = Arrays.stream(arr).filter(idx -> idx % divisor == 0).toArray(); Arrays.sort(res); if (res.length == 0) { res = new int[1]; res[0] = -1; } System.out.println(Arrays.toString(res)); |
배열의 원소를 가공하는데 있어
map, filter, sorted 등 이 있습니다.
map은 요소들을 특정조건에 해당하는 값으로 변환해 줍니다.
요소들을 대,소문자 변형 등 의 작업을 하고 싶을떄 사용 가능 합니다.
filter는 요소들을 조건에 따라 걸러내는 작업을 해줍니다.
길이의 제한, 특정문자포함 등 의 작업을 하고 싶을때 사용 가능합니다.
sorted는 요소들을 정렬해주는 작업을 해줍니다.
요소들의 가공이 끝났다면 리턴해줄 결과를 collect 를 통해 만들어줍니다.
TEST SET
ArrayList<string> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry"));
System.out.println(list);
//[Apple, Banana, Melon, Grape, Strawberry]
map
list.stream().map(s->s.toUpperCase());
list.stream().map(String::toUpperCase);
리스트의 요소들을 대문자로 변경해줍니다.
요소들을 대문자로 가공하였다면 collect 를 이용하여 결과를 리턴받을 수 있고, forEach 를 이용하여 바로 출력해볼수 있습니다.
System.out.println(list.stream().map(s->s.toUpperCase()).collect(Collectors.joining(" "))); //APPLE BANANA MELON GRAPE STRAWBERRY
System.out.println(list.stream().map(s->s.toUpperCase()).collect(Collectors.toList())); //[APPLE, BANANA, MELON, GRAPE, STRAWBERRY]
System.out.println(list.stream().map(String::toUpperCase).collect(Collectors.toList())); //[APPLE, BANANA, MELON, GRAPE, STRAWBERRY]
list.stream().map(String::toUpperCase).forEach(s -> System.out.println(s));
//APPLE
//BANANA
//MELON
//GRAPE
//STRAWBERRY
Collectors.joining 을 이용해 리스트를 조인의 기준으로 배치 할 수 있습니다. String 으로 리턴합니다.
Collectors.toList 를 이용해 리스트로 리턴 받을 수 있습니다.
forEach 요소마다 각각 작업을 할 수 있습니다.
filter
list.stream().filter(t->t.length()>5)
filter 는 요소를 특정 기준으로 걸러낼 수 있습니다.
요소의 크기가 5이상인 값만 뽑아냅니다.
System.out.println(list.stream().filter(t->t.length()>5).collect(Collectors.joining(" "))); //Banana Strawberry
System.out.println(list.stream().filter(t->t.length()>5).collect(Collectors.toList())); //[Banana, Strawberry]
마찬가지로 filter로 가공한 결과를 얻을 수 있습니다.
sorted
list.stream().sorted()
리스트의 요소를 정렬합니다.
System.out.println(list.stream().sorted().collect(Collectors.toList())); //[Apple, Banana, Grape, Melon, Strawberry]