Java Map인 HashMap, TreeMap, LinkedHashMap 에 대해서 정리해 보자.
안드로이드 프로그래밍을 하면서 Map을 사용하게 되는 경우가 종종 있는데요.Java 에서 제공해주는 Map에는 HashMap, TreeMap, LinkedHashMap 이 있는데요.이들에 대해서 한번 정리해보겠습니다. 1. HashMap HashMap의 소스코드는 길어서 다 볼수는 없지만, 간단한 주석이 들어있는 앞부분을 참조해보겠습니다.눈이 띄는 부분들을 정리해보면 다음과 같네요.인자로, null값이 허용되는 key,value값을 로 허용한다.해쉬맵의 순서는 정해져있지 않으므로, 정해진 순서대로 iterate을 하고 싶다면, LinkedHashMap을 사용할 것여러 워커 쓰레드를 사용하는 경우, 자동으로 동기화되지 않으므로, synchronized를 해야할 필요가 있다.Serializable을 사용하므..
2017. 2. 12.
Android의 Realm 데이터베이스 파일 은 특별한 곳에 있지 않다
안드로이드 Realm을 이용한 앱을 만들때, 데이터가 이미 들어있는 DB파일을 직접 앱에 넣고자 할 때가 있습니다. CSV파일을 넣고, 앱에서 코드로 읽어들일 수도 있겠지만, 데이터가 커질수록, 그렇게 효율적인 방법은 아닌것 같구요. 역시나, 파일의 위치를 찾아서 직접 replace해주는 것이 가장 좋고 편할 것 같은데요. 사용하는,시나리오를 생각해보면, Mac의 RealmBrowser에서 만든 데이터를 default.realm으로 export시켜서, 안드로이드에 넣어주는 것이네요. 1. Realm DB파일 위치 찾기 Realm의 경우 환경변수로 DB이름을 주지 않았다면,생성되는 파일명은 default.realm 입니다. 그런데, 문제는 이 파일이 어디에 있는냐는 거죠. 루팅한 폰이 아니고서는 앱안의 데..
2017. 1. 10.
Java IO에서 InputStream, OutputStream, Reader, Writer
Java에서 IO(Input/Output)라는 것을 하게 되면 InputStream, OutputStream, Reader, Writer 를 사용하게 되는데요. 오늘은 이들에 대해서 기본적인 것들을 정리해보려고 합니다. 1. Stream or Reader, Writer? 자바 IO는 입출력에 관해, 크게 두가지로 나눌 수 있습니다. 하나는, 바이트 단위로 입출력을 하는 Stream이구요, 여기엔 InputStream과 OutputStream이 있습니다. 다른 하나는, 2바이트인 문자단위 입출력을 하는 Reader, Writer입니다. InputStream과 Reader가 입력을, OutputStream과 Writer가 출력을 담당하므로, 두 개씩 묶어서 보도록 하겠습니다. 2. InputStream, R..
2017. 1. 7.
Android 에서 Activity로 Object넘겨줄 때엔 Serializable
Activity로 데이터를 넘기고 싶을 때, Intent로 PutExtra()메소드를 사용하여 데이터를 넘기는데요. 넘길 데이터가, 스트링 한두개가 아닌 경우도 있습니다. 예를 들면, 데이터 클래스가 다음과 같은 경우죠. 물론, 이런 데이터들 서버에서 받아서, 만능 ArrayList로 만들어서 넘길수도 있고, HashMap같은 게 필요할 때는 그것을 사용할 수도 있겠죠. 하지만, 당연하게도, Object를 넘길 수도 있습니다. 이 때, 데이터 클래스에서 implement하면 되는 것이 바로 Serializable입니다. 1. Serializable 적용 적용은 어떻게 할까요? 네, implements Serializable 요거면 됩니다. 우리말로 직렬화 인데요. 자바객체를 전송할 때, 다시 복원할 수 ..
2016. 12. 26.