All Posts

Java - Comparator로 정렬(Sorting)하는 방법

Comparator 객체를 생성하여 Collections나 배열 등을 정렬할 수 있습니다. Comparator는 익명 클래스 또는 람다식으로 만들 수 있습니다. compare()의 리턴 값은 음수, 양수, 0이 될 수 있습니다. 음수가 리턴되면 오른쪽 인자가 아래로 내려갑니다.

31 Oct 2019

Java - HashSet.remove() 사용 방법 및 예제

HashSet의 remove()는 인자로 전달된 아이템을 삭제합니다. removeAll()은 Collection의 아이템들을 모두 삭제하며, removeIf()는 람다식을 충족하는 아이템들을 모두 삭제합니다. 이 메소드들은 아이템을 삭제하면 true를 리턴하며 그렇지 않으면 false를 리턴합니다.

28 Oct 2019

Java - HashSet.add() 사용 방법 및 예제

HashSet의 add() 메소드는 인자로 전달된 아이템을 HashSet에 저장합니다. 그리고 HashSet에 존재하지 않는 아이템이라면 true, 존재하는 아이템이라면 false를 리턴합니다. 저장되는 아이템은 null이 허용되지만, 중복된 값은 허용되지 않습니다. 또한, 저장되는 순서는 보장되지 않습니다.

28 Oct 2019

C++ STL Vector 사용 방법

Vector는 동적으로 길이가 변하는 배열입니다. Vector는 push_back, pop_back, size, resize, shrink_to_fit, capacity 등의 함수를 제공합니다. 또한 iterator로 벡터를 탐색할 수 있습니다. 배열 방식으로도 접근이 가능합니다.

27 Oct 2019

Java - AtomicBoolean 사용 방법

AtomicBoolean는 boolean 자료형을 내부에 갖고 있는 wrapping class입니다. 멀티쓰레드 환경에서 동시성을 보장합니다. volatile과 다르게 여러 쓰레드에서 값을 write해도 동시성이 보장됩니다. get, set, getAndSet, compareAndSet 등의 함수를 제공해 줍니다.

27 Oct 2019

안드로이드에서 Coroutine을 사용하는 방법

Coroutine은 가벼운 쓰레드(Light-weight thread)입니다. 비동기적인(asynchronous) 프로그래밍이 가능하게 만들어 줍니다. async, launch, coroutine context 등의 코루틴 키워드를 설명하고 어떻게 코루틴을 작성해야하는지 설명합니다.

26 Oct 2019

안드로이드 - SAF(Storage Access Framework)로 파일 읽고 쓰는 방법

SAF(Storage Access Framework)는 문서 및 이미지 등 각종 파일을 탐색하고 저장하는 작업을 간편하게 하려고 도입하였습니다. 앱은 ACTION_OPEN_DOCUMENT, ACTION_CREATE_DOCUMENT 등의 인텐트로 파일을 읽고 쓸 수 있습니다. Document Provider, Client app, Selector 등으로 구성되어있습니다.

24 Oct 2019

안드로이드 - MediaStore에 미디어 파일 저장하는 방법

Media provider는 단말에 저장된 이미지, 동영상, 오디오 파일의 정보를 제공하는 프로바이더입니다. Scoped Storage가 적용되면서 미디어 데이터를 저장할 때는 MediaStore를 이용하기를 권장하고 있습니다. P와 Q에서 MediaStore에 데이터를 저장하는 방법을 알아보고, 차이점을 알아보겠습니다.

19 Oct 2019