java collection 실습해보기

이전에 c++로 STL로 자료구조를 살짝 느껴본 내용을 바탕으로 자바에서 (C++의 STL처럼) 컬렉션을 실습해보았습니다.

이론 내용은 거의 건너뛰고 바로 실습으로 넘어갔습니다.

array list

import java.util.ArrayList;

우선 ArrayList를 임포트합니다.

이클립스로 코딩한다면, 알아서 작성됩니다.

public class Main {

	public static void main(String[] args) {
		ArrayList<Integer>int_arr = new ArrayList<Integer>();

ArrayList 객체를 생성합니다.

제네릭으로 정수형을 선언했습니다.

		int_arr.add(1);
		int_arr.add(2);
		int_arr.add(3);
		int_arr.add(4);
		int_arr.add(5);

add로 값을 넣습니다.

순서, 즉 인덱스로 판별할 수 있습니다.

		System.out.println(int_arr.get(0));

특정 인덱스를 get하여 값을 알아낼 수 있습니다.

		int_arr.set(0, 10);

0번째의 값을 10으로 바꿉니다.

		System.out.println(int_arr.size());

이 자료구조의 크기를 나타냅니다.

		int_arr.remove(4);
		
		System.out.println(int_arr.toString());

4번째의 값을 지웁니다.

여기서 4번째라 함은 일반적으로 5번째 값이라는 소리입니다. (0부터 셈을 하기때문에…)

		int_arr.clear();		
		System.out.println(int_arr.toString());
	}
}

마지막으로 지워주면 []만 표시됩니다.

모두 삭제하려면 null로 해주어야 합니다.

Linked List

import java.util.LinkedList;

우선 LinkedList를 임포트합니다.

이클립스로 코딩한다면, 알아서 작성됩니다.

public class Main {

	public static void main(String[] args) {
		LinkedList<Integer> linked_int = new LinkedList<Integer>();

LinkedList 객체를 생성합니다.

제네릭으로 정수형을 선언했습니다.

		linked_int.add(1);
		linked_int.add(2);
		linked_int.add(3);
		linked_int.add(4);
		linked_int.add(5);
        System.out.println(linked_int.toString());

add로 값을 넣습니다.

		linked_int.add(0, 10);
		
		System.out.println(linked_int.toString());

해당하는 인덱스(0)에 값을 넣기 위해서는 그 뒤에 있는 인덱스들을 밀어내고 집어 넣습니다.

		linked_int.set(4, 50);

해당하는 인덱스(4)에 값을 50으로 변경합니다.

		System.out.println(linked_int.size());

이 자료구조의 크기를 나타냅니다.

		linked_int.remove(0);
		
		System.out.println(linked_int.toString());

0번째의 값을 지웁니다.

		linked_int.clear();
		
		System.out.println(linked_int.toString());
	}
}

마지막으로 지워주면 []만 표시됩니다.

모두 삭제하려면 null로 해주어야 합니다.

HashMap

import java.util.HashMap;

우선 HashMap를 임포트합니다.

이클립스로 코딩한다면, 알아서 작성됩니다.

public class Main {

	public static void main(String[] args) {
		HashMap<Integer, String> htest = new HashMap<Integer, String>();

HashMap 객체를 생성합니다.

제네릭으로 정수형을 선언했습니다.

		htest.put(0, "number0");
		htest.put(1, "number1");
		htest.put(2, "number2");
		htest.put(3, "number3");
		htest.put(4, "number4");
		System.out.println(htest.toString());
		

put으로 키와 값을 넣습니다.

여기서는 키로 인덱싱을 하게됩니다.

		System.out.println(htest.get(4));

get으로 키로 값을 찾습니다.

		htest.remove(0);
		System.out.println(htest.toString());

특정 키에 위치한 값을 지워줍니다.

		htest.clear();
		System.out.println(htest.toString());
	}

}

모두 지워줍니다.

HashSet

import java.util.HashSet;

우선 HashSet를 임포트합니다.

이클립스로 코딩한다면, 알아서 작성됩니다.

public class Main {

	public static void main(String[] args) {
		HashSet<Integer> hint = new HashSet<Integer>();

HashSet 객체를 생성합니다.

제네릭으로 정수형을 선언했습니다.

		hint.add(0);
		hint.add(4);
		hint.add(2);
		hint.add(5);
		hint.add(2);
		hint.add(5);
		hint.add(1);
		hint.add(0);
		System.out.println(hint.toString());

add로 값을 넣습니다.

set 특징으로 인해 중복된 값은 없어지며, 순차적으로 정렬되어 출력됩니다.

		hint.remove(0);
		System.out.println(hint.toString());
	}
}

지울 수 있습니다.

Iterator

Iterator로 자료구조 유형을 순차적으로 접근할 수 있습니다.

import java.util.Iterator;

임포트해주고

        Iterator<string> iterator = collection.iterator();
 
        while (iterator.hasNext()) {
        System.out.println(iterator.next());
        }

위와 같이 선언 후, hasNext()로 다음 내용이 존재하는지 검사합니다.

만약 있다면, next()로 다음 내용을 출력해줍니다.

Written on January 23, 2018