생각자유의 안드로이드 이야기

Rxjava를 이용하여 배열에서 필요한 값만 가져오기[filter, taleLast) 본문

Android/RxJava

Rxjava를 이용하여 배열에서 필요한 값만 가져오기[filter, taleLast)

생각자유 2016. 12. 7. 11:30
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요. 자유입니다.


이번엔 실제 개발진행할때 필요로 했던 간단한 로직이 필요한데 RxJava를 이용하여 해결한 내용을 간략하게 알려드리고 합니다.


{"original", "360" ,"480","720"}


이런 문자열 배열이 있다고 가정을 했을때.


1. 배열은 720을 제외해야 한다.

2 배열은 480을 사용해야 하며 없으면 320 없으면 original을 사용해야 한다.

3.original을 항상 존재한다.


이런 조건을 가졌다고 가정 했을 때.


일반적으로는 for -> if조합을 이용해서 저 안에 값을 가져 왔을것이다.


근데 Rxjava를 사용하면 조금은 깔끔(?)하게 저 로직을 정리 할 수 있을거 같다


일단 필요한것을 .filter와 .takeLast이다.


일단 배열이 무엇이 되었던 720을 제외하자.






그 다음에 720을 제외한 후 제일 마지막 값을 가져오게 하자. 이렇게 하면 맨 마지막이 무엇이 되었든 480,320 맨 마지막 값을 가져올 수 있다. takeLast는 인자로 몇 개의 마지막 값을 가져오는지 설정인데 난 무조건 1개라  1을 주었습니다.







간단하게 소스코드로 보면

Observable.from(videosUrl)
.filter(v -> !v.resolution.equals("720"))
.takeLast(1)
.subscribe(v -> {
System.out.println("해상도 순서 = " + v.resolution);
});

 I/System.out: 해상도 순서 = 480


내가 원하는 값을 가져 오게 되었습니다.




Comments