[알고리즘]
1. 숫자 문자열과 영단어 프로그래머스 1단계
class Solution
{
public int solution(String s)
{
int answer = 0;
String num[] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
for(int i=0;i<10;i++)
{
s = s.replace(num[i],Integer.toString(i));
}
answer = Integer.parseInt(s);
return answer;
}
}
String -> Int으로 변환하는 방법
Integer.parseInt(String s)
int -> String 으로 변환하는 방법
Integer.toString(int x)
s.replace(int a,string b)
a -> b로 변환
[강의]
스트림
- 스트림은 곧 '데이터의 흐름'입니다.
- 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자입니다.
- 스트림을 활용해서 필터링,데이터 변경, 다른 타입이나 자료구조로 변환 등을 할 수 있습니다.
구조
생성 -> 중간 연산 -> 최종연산
생성 : Stream<T> Collection.stream() 을 이용하여 해당하는 컬렉션을 기반으로하는 스트림을 생성할 수있습니다.
중간연산 : map , sorted, skip, limit
최종연산 : collect()를 이용해서 다른 콜렉션으로 바꾸는 것, reduce를 이용해서 incremental calculation하는 것도 가장 많이 쓰이는 패턴입니다.
특징(중요)
1 스트림은 데이터 소스를 변경하지 않습니다.
2 스트림은 컬렉션의 요소를 모두 읽고 나면 닫혀서 재사용이 불가능합니다. 그러므로 필요할 경우 재생성을 해야합니다.
3 스트림은 작업을 내부적으로 반복 처리합니다.
스트림 예제 1 (기본 구조)
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("서울");
list.add("부산");
list.add("속초");
list.add("서울");
System.out.println(list);
List<String> result = list.stream() // 스트림 생성
.limit(2) //중간 연산
.collect(Collectors.toList()); // 최종 연산
System.out.println(result);
System.out.println("list -> transformation -> set");
Set<String> set = list.stream()
.filter("서울"::equals)
.collect(Collectors.toSet());
set.forEach(System.out::println);
}
}
코딩 결과
스트림 예제2 (Array를 Stream)으로 변경
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
String[] arr = {"엑셀보다 쉬운 SQL", "웹개발 종합반",
"알고보면 알기쉬운 알고리즘", "웹개발의 봄,Spring"};
Stream<String> stringStream = Arrays.stream(arr);
stringStream.forEach(className -> System.out.println("수업명 : " + className));
System.out.println();
}
}
코딩 결과
스트림 예제3 (MAP 연산 활용)
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
import org.apache.commons.lang3.tuple.Pair;
class Sale {
String fruitName;
int price;
float discount;
public Sale(String fruitName, int price, float discount) {
this.fruitName = fruitName;
this.price = price;
this.discount = discount;
}
}
public class Main {
public static void main(String[] args) {
List<Sale> saleList = Arrays.asList(
new Sale("Apple", 5000, 0.05f),
new Sale("Grape", 3000, 0.1f),
new Sale("Orange", 4000, 0.2f),
new Sale("Tangerine", 2000, 0)
);
Stream<Sale> saleStream = saleList.stream();
saleStream.map(sale -> Pair.of(sale.fruitName, sale.price * (1 - sale.discount)))
.forEach(pair -> System.out.println(pair.getLeft() + " 실 구매가: " + pair.getRight() + "원 "));
}
}
코딩 결과
스트림 예제 4 (reduce를 이용한 계산)
import java.util.List;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
List<Integer> numArr = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Integer result = numArr.stream().reduce(0, Integer::sum);
//reduce와 sum을 활용하여 1부터 10까지 더하게 됩니다.
System.out.println(result);
}
}
코딩 결과
55
스트림 퀴즈
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("김정우", "김호정", "이하늘", "이정희", "박정우", "박지현", "정우석", "이지수");
long count = names.stream()
.filter(str->str.startsWith("이"))
.count();
System.out.println("count : " + count);
}
}
코딩 결과
3
'스파르타코딩클럽(내일배움캠프)' 카테고리의 다른 글
스파르타 코딩 클럽 4주차 3일 (0) | 2022.11.22 |
---|---|
스파르타 코딩 클럽 4주차 2일 (0) | 2022.11.21 |
스파르타 코딩 클럽 3주차 후기 (1) | 2022.11.20 |
스파르타 코딩 클럽 3주차 5일 (1) | 2022.11.18 |
스파르타 코딩 클럽 3주차 4일 (1) | 2022.11.17 |