일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 안드로이드 스튜디오 style
- 안드로이드 디자인패턴
- 객체지향 프로그래밍 5가지 원칙
- 안드로이드 스튜디오 인터넷 연결 안되어 있을 때
- 변수
- edittext 연결
- recyclerview item recycle
- AAC
- Thread
- 리사이클러뷰 아이템 재사용
- 아파치 엔진엑스
- 아파치란
- 안드로이드 스튜디오 인터넷 연결 확인
- dagger error
- 안드로이드 스튜디오 tts
- LifeCycle
- apache란
- java thread 예제
- apache nginx
- 안드로이드 스튜디오 custom dialog
- Kotlin
- 디자인 패턴 예제
- 자바 스레드 예제
- 이중for문 사용 안하기
- java
- 다른 객체 리스트의 비교
- savedinstancestate
- 안드로이드 스튜디오 반복되는 레이아웃 코드
- hilt error
- 안드로이드 스튜디오 커스텀 다이얼로그
- Today
- Total
Sam Story
2024-07-21 scrollView , 다른 객체 리스트의 비교 본문
scrollView도 알게 모르게 많이 사용했었는데 따로 블로그 포스팅으로 다뤄본적이 없었어서
오늘 작업중 수정한 내용을 기반으로 간단히 포스팅 해보려 한다.
먼저 스크롤 뷰의 용도자체는 레이아웃을 짜다보면 필연적으로
기본 레이아웃이 화면 밖으로 나가져야 하는 경우가 생길 수 있다.
이런 경우에 사용하는게 스크롤 뷰 이다.
기존 레이아웃에 스크롤 뷰를 입히게 되면 볼 수 있는 화면을 더 크게 짤 수 있게 되는것이다.
스크롤 뷰 사용 예시
스크롤 뷰를 사용할 때 유의할 점은 스크롤 뷰는 한가지 뷰 밖에 담을 수 없다는 것이다.
예를 들자면 레이아웃을 짤때 여러 레이아웃을 사용해서 짜는 경우가 있는데
이 여러 레이아웃 들을 스크롤 뷰 하나에 전부 담을 수 없다.
이런 경우에는 겉을 감싸는 레이아웃을 만들고 그 위에 스크롤 뷰를 만들어줘야 하는것이다.
그리고 오늘 사용한 것중에 다른 객체 리스트의 비교에 대한건
지금 진행하는 프로젝트에서 나의 운동 리스트와 전체 운동 리스트를 비교해서
일치하는 운동의 객체들을 이용해서 작업하는 내용이 굉장히 많은데
이러한 두 리스트의 비교작업을 할때 제일먼저 떠오르는건 항상 이중for문 이였다.
하지만 이중 for문은 지양되는 방식일 뿐더러 연산자체도 합연산이 아닌 곱연산으로 처리가되어서
굉장히 부하가 심하다.
그럼 이중 포문을 사용하지 않고 다른 객체 리스트의 비교를 어떻게 하는게 효율적인지에 대한걸
프로젝트 중반부 부터 굉장히 고민을 많이했었고 여러가지 방식들을 사용했었는데
그중 가장 효율적이라고 생각한게 Map,Set을 이용하는 것이다.
Map과 Set 대한 내용은 기회가되면 좀더 자세히 다루어 보도록 하겠다.
코드를 보면
위 코드에서 보면 주목해야할 코드는
myExerciseList의 이름들을 Set에 저장하는 코드이다.
Set은 중복된 값을 허용하지 않는 컬렉션이다.
이러한 특성을 이용하여 myExerciseNames 라는 Set을 만들고 이 Set에는 myExerciseList의
PoseExercise라는 객체의 exerciseName 값이 저장되어 있다.
그래서 이걸 이용하여 리스트를 순회하며 exerciseInfoList라는 전체 운동 리스트중에
myExerciseList의 운동 이름과 일치하는 객체만 새로운 리스트에 추가해 줄 수 있는것이다.
이러한 자료구조를 사용해 코드를 짜게되면 이중for문을 사용했을때는 두리스트를 여러번 순회하게 되지만
이렇게 짰을때는 두 리스트를 각각 한번만 순회하기 때문에 훨씬 효율적이라고 할 수 있다.
이렇게 짜는 이유는 아까도 말했던 이중for문이 부하가 심한것도 있고
알고리즘의 시간 복잡도 때문인 것도 있다고 한다.
그렇기 때문에 이중for문을 사용하게 되는 경우가 생긴다면 한번 더 고민해보고 다른 방식으로도 접근을
해보는 방식이 필요하다고 생각한다.
'공부기록' 카테고리의 다른 글
2024-08-19 리사이클러뷰 아이템 재사용 문제 (0) | 2024.08.19 |
---|---|
2024-08-07 Dagger,Hilt에 관한 공부 기록 (0) | 2024.08.07 |
2024-07-29 tts 사용법 (2) | 2024.07.29 |
2024-7-24 인터넷 연결이 안되어 있는경우 예외처리 (2) | 2024.07.24 |
2024-07-19 레이아웃 style 적용 , strings 파일 이용 (0) | 2024.07.19 |