페이지

2015. 1. 16.

[JAVA] Day9. java.util

java.util

날짜와 시간을 관리하는 클래스를 알아보자





배열이 다른 언어에 비해 자바는 잘 사용하지 않는다.

맘만 먹으면 안쓸수도 있다.

왜냐하면 collection 클래스에서 배열과 비슷하지만 더 쉬운 방법으로

기능을 제공하기 때문...







인터페이스의 최고 조상 Collection<E>



Comparator<T> : 정렬을 위한... sort 메소드를 구현하고자 할때




List<E>
 - 데이터 저장 순서가 있다.
 - 중복값을 허용한다.
 - ArrayList, Stack


















import java.util.ArrayList;





class  Test
{
    public static void main(String[] args)
    {
        ArrayList list = new ArrayList();
        list.add("hello");
        list.add(100);
        list.add(5.7);
        //add는 추가
        System.out.println(list);
        //list의 toString을 보여주는것
        list.add(2,"korea");
        //첫번째 매개변수는 index번호임
        System.out.println(list);
        list.set(2,"한국");
        //set은 변경
        System.out.println(list);
        System.out.println("list.get(0) : " + list.get(0));
        //get은 값 추출
    }
}











class  Test
{
    public static void main(String[] args)
    {
        ArrayList list1 = new ArrayList(10);
        list1.add(new Integer(5));
        list1.add(new Integer(4));
        list1.add(new Integer(2));
        list1.add(new Integer(0));
        list1.add(new Integer(1));
        list1.add(new Integer(3));
        //list1 : 5,4,2,0,1,3
        ArrayList list2 = new ArrayList(list1.subList(1,4));
        //list2 : 4,2,0
        print(list1, list2);

        Collections.sort(list1);
        Collections.sort(list2);
        //오름차순 정렬
        print(list1, list2);

        System.out.println("list1.containsAll(list2) : " + list1.containsAll(list2));
        //containsAll() : list2가 list1에 완전히 포함되는가? : true리턴!

        list2.add("B");
        list2.add("B");
        list2.add(3,"AA");
       
        print(list1, list2);
        //list1 : 5,4,2,0,1,3
        //list2 : 0, 2, 4, AA, B, B
        System.out.println("list1.containsAll(list2) : " + list1.contains(list2));
        //완전 포함이 아니기 때문에 false 리턴!
        print(list1, list2);
        System.out.println("list1.size() : " + list1.size());
        System.out.println("list2.size() : " + list2.size());

        for (int i=5;i>=0;i--)
        {
            if(list1.contains(list2.get(i)))
                list2.remove(i);
        }
        //contains는 해당 원소1개가 있는가?를 측정함
        //list2에 있는 원소중에 list1에 있는 원소라면 제거하는 루프
        print(list1, list2);
    }//main

    static void print(ArrayList list1, ArrayList list2)
    {//list1, list2를 출력하는 메소드
        System.out.println("list1 : " + list1);
        System.out.println("list2 : " + list2);
        System.out.println();
    }
}







어레이 리스트는 순차적으로 접근하여 데이터를 추가.삭제하는 방식
링크드리스트는 직접적으로 접근, 속도는 빠름, 하지만 약간 무겁다...
메서드 사용방법은 어레이 리스트와 거의 비슷









Set<E> (리스트의 반대 개념)
 - 데이터 저장 순서가 없다.
 - 중복값을 허용하지 않는다.
 - HashSet, TreeSet


 import java.util.*;
class Tv
{
}
class  Test
{
    public static void main(String[] args)
    {
        HashSet set = new HashSet();
        set.add("abc");
        set.add("abc");
        set.add(new Tv());
        set.add(new Tv());
        System.out.println(set);
//        abc는 new로 생성하지 않았고 Tv는 new로 생성했기때문에 차이가 있음
    }
}

트리셋
값이 중복되지는 않지만 정렬되어 삽입되는 것이 특징
따라서 무겁고 느림

따라서 잘 사용하지 않고 헤쉬셋을 사용한뒤 필요할때 정렬메소드를 사용하는 식으로 사용한다.



스케너 클래스

Scanner class

Scanner scan = new Scanner(System.in);

scan.nextLine();
//문자열을 입력 받는다.


import java.util.*;

class  Test
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        String input = "";

        do
        {
            System.out.print("값을 입력하세요(Q를 입력하면 종료) : ");
            input = scan.nextLine();
            System.out.println("입력 값은"+input+"입니다");
        }
        while (!input.equalsIgnoreCase("Q"));
       
        System.out.println("종료합니다.");
    }
}




SortedMap<K, V>
 - 키(key), 값(value) 쌍을 이룬다.
 - 키의 중복은 허용되지 않으며, 값의 중복은 허용한다,
 - 저장 순서가 없다.
 - HashMap, TreeMap



map

키, 벨류로 입력값을 받음

키의 중복은 허용되지 아니한다. 값의 중복은 가능

키가 중복된다면 덮어 쓰기가 된다.

해시맵이엑스1

해시맵이에스2 가 중요







ArrayList의 API의 메소드 개요를 보면 add (E  e) 형식이다.

제너릭 방식이란?

<타입>을 정해주는것

ArrayList<String> list = new ArrayList<String>();

원래는 오브젝트로 리턴되지만, 리턴 또한 제너릭 타입으로 리턴된다. 여기서는 String으로 될것!

HashMap<String, Integer> map = new HashMap<String, Integer>();