2월, 2026의 게시물 표시

Kotlin What was the ConcurrentHashMap?

이미지
사용 언어: Kotlin 2.3.10 코틀린 What was the ConcurrentHashMap을 알아보겠습니다. ConcurrentHashMap(컨커런트 해시 맵)은 멀티 스레드 환경에서도 안전하게 결과가 보장되는 자료형입니다. 그래서 동시에 발생한다는 뜻의 Concurrent가 붙은 것이죠. 아래는 공식 문서입니다. Java에 존재하는 Class입니다. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html 많은 함수 중에서 Atomically(아토미컬리)가 붙은 함수만 같이 보겠습니다. Atomically는 원자성을 나타내며 보통 저런 단어가 쓰이면 멀티 스레드 환경에서도 보존된다 보시면 됩니다. putIfAbsent를 봅시다. putIfAbsent는 값이 없으면 null(널)을 반환하며 동시에 ConcurrentHashMap에 값을 put 합니다. 만약 값이 있다면 put(풋)을 하지 않습니다. 다음은 remove입니다. Remove(리무브)는 Key(키) Value(값)이 완전히 일치하지 않으면 false(폴스)를 반환하며 삭제를 하지 않습니다. 정확한 key와 value를 넣으면 삭제를 하며 true를 반환합니다. 다음은 Replace입니다. 이 replace(리플레이스)는 key와 value 값 그리고 새로운 vlaue 값을 적어줍니다. key와 value가 일치하지 않으면 false를 반환하며 아무 작업도 하지 않고, 일치하면 새로운 value 값으로 변경을 하며 true(트루)를 반환합니다. 다음은 다른 parameter(파라미터)를 받는 replace입니다. 이 replace는 key 만으로 값을 바로 변경해 버립니다. Return(리턴) 값은 key가 존재하면 변경되기 전의 값을 반환하며 값을 변경하고, key가 없으면 null을 반환합니다. 다음은 computeIfAbsent입니다. computeIfAbsent는 해당 key가 없으면 값을...

Android How to use EditTextPreference by not string types

이미지
사용 언어: Kotlin 2.3.0 사용 버전: Android Studio Otter 3 Feature Drop | 2025.2.3 안드로이드 How to use EditTextPreference by not string types를 알아보겠습니다. EditTextPreference(에딧 텍스트 프레퍼런스)는 SharedPreferene(셰어드 프레퍼런스)의 값을 보여주고 수정할 수 있게 해줍니다. 하지만, 하나의 문제가 있는데요. SharedPreference의 다양한 Type(타입)을 전부 사용할 수 없다는 점입니다. String(문자열)으로만 받으며, 다른 Type을 넣을 시 타입 변환 오류를 반환하며 종료됩니다. 그럼 우리는 SharedPreference에 Int(인트), Long(롱), Float(플롯) 형을 String으로 저장해야 하는 것일까요? 그럼 조금 불편할 것 같네요. 해결책으로는 EditTextPreference를 우리 입맛에 맞게 Custom(커스텀) 하는 방법이 있습니다. 아무 Kotlin 파일이나 만들어줍니다. 저는 이름을 CustomEditTextPreference라고 지었습니다. EditIntPreference를 만들어 준 다음, EditTextPreference를 상속받습니다. 그리고 EditTextPreference가 가지고 있는 모든 생성자의 경우를 작성해 줍니다. 그리고 하단에 getPersistedString과 persistString을 아래와 같이 override(오버라이드) 합니다. 33번 줄은 EditTextPreference에서 String을 가져올 때, getPersistedString이 호출이 되는데, 우리는 Int형을 사용하므로 getPersistedInt로 치환해서 사용합니다. 39번째 줄은 EditTextPreference가 업데이트될 때의 행위를 정합니다. xml에 다음과 같이 사용할 수 있습니다. 원래 EditTextPreference는 자동으로 SharedPreference의 값을 최신화하지만, 우린...