JAVA/in 기초
-
[발번역]언제 ArrayList 대신 LinkedList을 쓰나요?JAVA/in 기초 2014. 12. 25. 00:57
질문 : 나는 대부분 간단하게 List names = new ArrayList() 이렇게 사용한다.나는 이식성이 좋은 인터페이스(Interface) 타입을 사용한다, 그래서 나의 코드가 변경이 필요할 때 변경 할수 있다. 언제 LinkedList를 ArraryList 대신 쓰나요? 또는 반대로 사용해야 하나요? 요약 답변 : ArrayList 와 ArrayDeque가 LinkedList 보다 더 많이 사용 되는 것이 선호 된다. 확실하진 않다. ArrrayList 에 대해 이야기 해보자 LinkedList와 ArrayList는 List Interface를 다르게 구현한 것이다.LinkedList는 이중 연결 목록 방식으로 구현 되어 있고, ArrayList는 동적으로 크기가 변환되는 배열 방식으로 구현 ..
-
[JAVA8]자바의 다중 상속 관련 내용JAVA/in 기초 2014. 12. 19. 13:01
자바7 버젼까지 다중 상속의 개념 보다는 확장이라는 개념이 지배적이었다. 인터페이스를 다중으로 상속받아 좀더 확장된 인터페이스가 되기 때문이다. 그런데 자바8에서는 default method를 이용한 다중상속이 가능하다. 다음은 그 예제를 구현간단하게 구현 하여 보았다. 비행카(PlaneCar) 라는 다중상속을 받은 인터페이스가 있고, 비행기(Plane)와 자동차(Car)라는 인터페이스가 있다 각 인터페이스는 다음과 같은 기능을 가진다. [비행카 클래스도] 비행카 인터페이스 에서는 다중상속에는 다이아몬드 문제라는 것이 있다, 그것을 어떻게 처리하는지를 보여주기 위해 carry()라는 default method를 추가 하였다. public interface Plane{ default void fly(){ ..
-
[JAVA8]Stream 맛보기JAVA/in 기초 2014. 12. 2. 10:04
JAVA8에서 추가된 Stream 인터페이스는 많은 기능을 제공 합니다. 특히 정렬, 필터, 통계 등을 람다(LAMBDA)표현식을 이용하여 간단하게 표출 하도록 도와 줍니다. JAVA 5,6,7 에서의 방식 List humanList = initialList(); //남자인 사람의 수 int manCount = 0; for(Human h : humanList){ if(h.isMan() ){ manCount ++; } } //10세 이하인 사람의 나이 합산 int below10_totalAvg = 0; for(Human h : humanList){ if(h.getAge() < 10 ){ below10_totalAvg += h.getAge(); } } assertEquals(below10_totalAvg, ..
-
스레드 기본(3)JAVA/in 기초 2014. 3. 5. 01:27
동기화 스레드의 문제점스레드들이 여러 개 동시의 작업을 진행하기 때문에 공유자원의 문제가 발생한다. 동기화(Synchronization)의 정의줄서기(번갈아 가면서 순서대로 공유자원 사용하기) 동기화의 기법synchronized 블록(자원을 사용할 때 자원에 락(Lock)을 거는 방식)wait() 와 notify() 동기화가 보장되지 않는 예제 public class NotSyncDataMain { public static Data data = new Data(); public static void main(String[] args) { System.out.println("main 시작"); Tom t = new Tom(); Jane j = new Jane(); t.start(); j.start(); S..
-
스레드 기본(2)JAVA/in 기초 2014. 3. 5. 01:05
스레드의 상태 스레드의 제어 스레드를 만들고 시작하는 것보다 스레드를 제어 하는 것이 더 중요 하다. 스레드 제어의 기본 스레드를 제대로 제어하려면 스레드의 상태부터 알아야 한다. 스레드의 상태 시작 상태(Start 상태) 동작할 수 있는 상태(Runnable 상태) 동작 상태(Run 상태) 대기 상태(NotRunnable 상태) 종료 상태(Dead 상태) 제일 먼저 스레드를 만든 후 start()를 호출햇을 때 Start 상태가 된다. 그리고 바로 Runnable 상태로 진입하게 된다. Runnable 상태에서 CPU의 제어권을 할당 받는 순간 Run 상태가 되었다가 일정 시간 동안 작압을 한 후 Runnable 상태도 되돌아와서 자신의 순서가 되기를 기다린다. 결국 Runnable 상태에 있는 스레드..
-
static 변수는 하나의 프로세스에서 하나의 값만 가진다.JAVA/in 기초 2014. 3. 5. 01:03
static 변수는 하나의 값만을 가진다. static 변수를 가진 class 의 인스턴스를 새로 생성 하여도 static의 값들은 한 곳의 메모리만 바라보게 된다. 샘플 public class TestStaticInt { public static int i = 0; public static void main(String[] args) { TestStaticInt t1 = new TestStaticInt(); t1.i = 1; TestStaticInt t2 = new TestStaticInt(); t2.i = 2; TestStaticInt t3 = new TestStaticInt(); t3.i = 3; TestStaticInt.i = 4; System.out.println(t1.i); System.out..