본문 바로가기

Programming

(468)
컬렉션 프레임워크(3) - Set 컬렉션 2 : HashSet [1/2] 본격적으로 Set 컬렉션의 구현 클래스를 살펴보겠습니다. 우선, HashSet을 보겠습니다. 기본적으로 HashSet 생성은 아래와 같이 기본 생성자를 호출하는 방식입니다. 타입 파라미터 E에는 컬렉션에 저장할 객체의 타입을 선언하는 것은 기존 컬렉션과 동일합니다. Set set = new HashSet(); Set set = new HashSet(); HashSet에서 중요한 포인트는, 객체들을 순서 없이 저장하고 동일한 객체는 중복 저장하지 않는다는 성질을 처리하는 방식입니다. HashSet은 객체를 저장하기 전, 두 가지 스텝을 거쳐 동일한 객체인지를 판단하고 저장을 하게 됩니다. 1. 객체 저장 전, 객체의 hashCode( )를 호출해 해시코드 리턴 값을 이미 저장된 객체들의 해시코드와 비교합니..
2. 안드로이드 기본 구조의 이해 (2) - 컴포넌트(component) 1 안드로이드의 큰 특징이자, 안드로이드 아키텍처 이해에 있어서 중요한 컴포넌트(component)에 대해서 살펴보도록 하겠습니다. 1. 컴포넌트는 앱의 구성단위이다 컴포넌트는 안드로이드 앱을 구성하는 구성 단위입니다. 안드로이드 앱은, 여러 개의 컴포넌트를 개발자가 작성하고 이를 조합하여 완성하게 되는 개념입니다. 그런데 '컴포넌트'라는 개념 자체가 가시적인 개념이 아니어서 이해가 안 될 수도 있습니다. 2. 컴포넌트의 물리적 단위는 클래스이다 눈치채신 분들도 있겠지만, (광의의 의미에서)컴포넌트는 클래스라는 물리적인 단위로 구분됩니다. 예를 들어, 어떤 하나의 앱이 A.class, B.class, C.class라는 세 개의 클래스로 구성되어 있다면 이 앱은 3개의 컴포넌트 클래스로 구성되어 있다고 말할 ..
컬렉션 프레임워크(3) - Set 컬렉션 1 : Set의 개념 List와 차별화되는 Set 컬렉션의 가장 큰 특징은, 수학의 집합과 유사한 성질을 갖는다는 것입니다. 기본적으로 Set 컬렉션은 인덱스가 사용되는 List와 달리 (1) 순서가 없고, (2) 중복이 허용되지 않습니다(null도 하나만 저장할 수 있습니다). 기본적으로 Set 컬렉션의 종류에는 HashSet, LinkedHasSet, TreeSet 등이 있습니다. 그리고 아래의 메서드들은 Set 컬렉션에서 공통으로 사용 가능한 Set 인터페이스의 메서드들입니다. List 컬렉션과 달리, 인덱스 개념이 없기 때문에 인덱스를 파라미터로 갖는 메서드가 없다는 것이 특징이지요. 기능 메서드 description 객체 추가 boolean add(E e) 주어진 객체를 저장한다. 저장 성공 시 true, 실패 시 ..
2. 안드로이드 기본 구조의 이해 (1) - 안드로이드 아키텍쳐 ○ 안드로이드 아키텍처 안드로이드 아키텍처를 자세하게 이해하기보다는, 상식 수준에서 읽어두시기 바랍니다. 플랫폼 아키텍처 | Android 개발자 | Android Developers Android is an open source, Linux-based software stack created for a wide array of devices and form factors. The following diagram shows the major components of the Android platform. The foundation of the Android platform is the Linux kernel. For example… developer.android.com - 안드로이드 플랫폼은 리눅스 커..
컬렉션 프레임워크(2) - List 컬렉션 4 : Vector Vector는 기본적으로 ArrayList와 동일한 구조를 갖고 있습니다. 그래서 생성, 사용 방식 자체는 ArrayList와 크게 다르지 않습니다. List list = new Vector(); 그럼, ArrayList와 동일한 형태인데 굳이 Vector를 사용해야 하는 이유가 있을까요? 간단하게 요약하면, 이것은 Thread Safe - 즉, 스레드 상황에서 안전성을 보장하기 때문입니다. ArrayList와 다른 점은 Vector의 경우 동기화된(synchronized) 메서드로 구성되기 때문에 멀티 스레드일 경우, 동시에 이 메서드를 실행할 수 없다는 특징을 갖습니다. 즉, 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있다는 것이죠. 결국 멀티 스레드에서 안전하게 객체를 추가하거나 삭..
컬렉션 프레임워크(2) - List 컬렉션 3 : Linked List LinkedList는, 앞서 살펴보았던 ArrayList와 사용방법은 동일하지만, 내부 구조가 완전히 다른 List 구현 클래스입니다. 기본적으로 ArrayList는 배열(인덱스)을 기반으로 관리하지만, LinkedList는 인접참조를 통해 체인처럼 연결한 객체를 관리하게 됩니다. 컬렉션 프레임워크(2) - List 컬렉션 2 : ArrayList 앞서서 우리는 List라는 기본적인 컬렉션에 대해서 살펴보았습니다. 일렬로 늘어놓고, 객체를 인덱스 기반으로 관리한다고 했죠. 그리고 이는 하나의 인터페이스이기 때문에, 구현 클래스들이 nozeroslope.tistory.com 위에서 말씀드렸다시피, 기본적으로 ArrayList와 LinkedList는 사용법 자체는 동일합니다. 인덱스 기반으로 배열처럼 생성과..
컬렉션 프레임워크(2) - List 컬렉션 2 : ArrayList 앞서서 우리는 List라는 기본적인 컬렉션에 대해서 살펴보았습니다. 일렬로 늘어놓고, 객체를 인덱스 기반으로 관리한다고 했죠. 그리고 이는 하나의 인터페이스이기 때문에, 구현 클래스들이 존재하고 이 구현 클래스를 기반으로 사용하게 됩니다. 컬렉션 프레임워크(2) - List 컬렉션 1 : List의 개념 앞서서 살펴본 컬렉션 프레임워크의 기본 개념을 바탕으로, 하나씩 세부 사용법을 살펴보도록 하겠습니다. 우선 List 컬렉션에 대해서 먼저 살펴보겠습니다. 컬렉션 프레임워크(1) - 컬렉션 프레 nozeroslope.tistory.com ○ ArrayList ArrayList는 List 인터페이스의 구현 클래스 중 하나로, 상당히 많이 사용되는 구현 클래스입니다. 일반적인 JAVA의 배열과 ArrayLis..
1. 안드로이드 스튜디오 기본 환경 구축 (3) - 앱 배포 우선 간단하게, 안드로이드 스튜디오에 앱이 완성된 다음 바이너리 파일을 배포하는 방식에 대해서 간단하게 살펴보도록 하겠습니다. 기본적으로 안드로이드 앱 배포에 있어서는 키(Key) 생성과 이를 통한 서명이 필요합니다. 그리고 APK 혹은 AAB 형태로 바이너리 파일을 생성하는 과정이 필요합니다. 이 과정을 함께 살펴보도록 하겠습니다. ○ package name 확인 우선 안드로이드 스튜디오에서 프로젝트 하이어라키 중, [Gradle Scripts] > [build.gradle (Module: ______.app) ]을 확인해 봅시다. 해당 라인 중 applicationId에 패키지명이 작성되어 있습니다. 해당 패키지명이 중복되는 앱이 있으면 릴리즈가 불가하니 다시 한번 이슈가 없는지 확인이 필요합니다. ..