JAVA

java.util 패키지

GUCCI 2011. 3. 3. 15:55

 

  java.util  패키지

 

  Date 클래스

 

   날짜와 시간을 관리 하는 대표적인 클래스. GMT 시간으로 반환한다. 1/1000초 까지 반환한다.

   1900 년과 1970년을 기준으로하는 메서드들이 존재하며 1970년이 기본 기준이된다.

 

   *gerYear( ) : 메서드만 기준이 1900년도로 설정되어 있다.

   getHours( ) : 현재 시간을 반환한다. 0~ 23시

   getMinutes( ) : 현재 분을 반환한다. 0 ~ 59분

   getSeconds( ) : 현대 초를 반환한다. 0 ~ 59초

 

   import java.util.Date;
   class Data1{
       public static void main(String[] args) {
           Date date=new Date();
           System.out.println(date); //toString이 Date클래스에 오버라이딩 되어 있다.
           
int h=date.getHours(); //현재 시간을 h에 대입
           int m=date.getMinutes(); //현재 분을 m에 대입
           int s=date.getSeconds(); //현재 초를 s에 대입
           System.out.println("현재 시간은 "+h+"시 "+m+"분 "+s+"초 입니다");

 

           -출력 결과-

Thu Nov 19 14:16:12 KST 2009
현재 시간은 14시 16분 12초 입니다
현재 시간은 2시 16분 12초 입니다
계속하려면 아무 키나 누르십시오 . . .

 

  Calendar 클래스

 

   현재 날자 시간 정보를 필드 상수값으로 보관한다. 사용하고자 할 때 해당 상수값을 set 하거나

   get 하여 사용하게 된다.

 

   getTime( ) : 현재 날자 시간 정보를 Date 클래스 형태로 반환한다.

   getInstance( ) : Calendar 인스턴스를 생성하여 반환한다.

   set( ) : 연월일시분초에 해당되는 매개변수를 받아 set 한다.

   get( ) : 해당 필드값을 반환한다.

   after( ) : 매개변수 Calendar 객체의 시간이 더 크다면 true 반환

   befor( ) : after와 반대 기능을 수행한다.

   equals ( ) : 두 객체의 날자 시간 정보가 같으면 true 반환.

   add( ) : 필드값에 대해 감산 및 가산한다.

   roll( ) :  필드값을 변경하지 않고 감산 가산한다. 범위가 해당 필드 범위사이에서 설정

                  일에 대한 기준은 해당 월에 따른 일수에 따라 설정된다.

 

   import java.util.Calendar;
   class CalendarTest{
       public static void main(String[] args) {
           Calendar c=Calendar.getInstance();
           Calendar c2=Calendar.getInstance();
           System.out.println("Calendar 클래스 시간과 날짜 출력 ");
           c2.set(2000,9,11); //연월일시분초에 대한 set
          
System.out.print(c.get(Calendar.YEAR)+"년"); //현재 년도 필드 YEAR 리턴
          
System.out.print((c.get(Calendar.MONTH)+1)+"월"); //위와 같은 내용
          
System.out.print(c.get(Calendar.DATE)+"일");
          System.out.print(c.get(Calendar.HOUR)+"시");
          System.out.print(c.get(Calendar.MINUTE)+"분");
          System.out.println(c.get(Calendar.SECOND)+"초");  
          if(c.after(c2)) //c 시간이 c2 시간보다 클 경우 true . 반대는 before 메서드
               
System.out.println("현재 시간은 2000년 9월 11일 이후입니다.");
          else
               System.out.println("현재 시간은 2000년 9월 11일 이전입니다."); }}

 

             -출력 결과-

Calendar 클래스 시간과 날짜 출력
2009년11월19일2시15분42초
현재 시간은 2000년 9월 11일 이후입니다.
계속하려면 아무 키나 누르십시오 . . .

 

   import java.util.Calendar;
   class Test{
   public static void main(String[] args) {
      Calendar date=Calendar.getInstance();
      date.set(2005,7,31); //연월일 set
      System.out.println(toString(date)); //오버라이딩된 toString 호출
      System.out.println("=1일 후 = ");
      date.add(Calendar.DATE,1); //현재 날에 1일 더한다. 31일이므로 새달 1일이 된다.
      System.out.println(toString(date));
      System.out.println("=31일 후 = ");
      date.roll(Calendar.DATE,31); //현재 월의 날의 수를 기준으로 31일 돈 후 2일이 된다.
      System.out.println(toString(date)); }
   public static String toString(Calendar c) {
      return c.get(Calendar.YEAR)+"년"+c.get(Calendar.MONTH)+"월"

                +c.get(Calendar.DATE)+"일"; }}

-출력 결과-

2005년7월31일
=1일 후 =
2005년8월1일
=31일 후 =
2005년8월2일   <-- roll에 의한 변화. 달에는 영향을 미치지 않는다.
계속하려면 아무 키나 누르십시오 . . .

 

 

  Gregorian Calendar 클래스 

 

   Calendar 클래스를 상속받고 있다. 1년이 365.2526년 시간이 지날수록 계산이 틀려지는 것을

   해결할 수 있다. 윤년을 처리할 수 있는 메서드를 가진다. isLeapYear ( )

 

   isLeapYear (int year ) : 윤년이 맞다면 true를 반환 아니면 false를 반환한다.

  List 인터페이스

 

   순서가 있는 데이터의 집합이다. 데이터의 중복을 허용한다.대표적인 구현 클래스는 ArrayList,

   LinkedList, Stack, Vector 가 있다.

 

  ArrayList 클래스

 

  배열의 기능과 가장 비슷한 클래스이다. 저장공간으로 배열을 사용한다. 저장 순서가 유지되고

  중복이 허용된다.

 

  add ( ) : 해당 데이터를 리스트에 추가한다. 기본적으로 가장 뒤에 추가 위치 index 사용가능

  retainAll( ) : 해당 데이터가 자신의 리스트에 포함되어 있다면 true 아니면 false

  contains( ) : 해당 데이터가 자신의 리스트에 포함되어 있다면 true 아니면 false

  set ( ) : 해당 데이터를 수정한다. 바꾼다. 위치 index 사용가능

  get ( ) : 해당 데이터를 반환한다. 위치 index 사용가능

  remove ( ) : 해당 데이터를 삭제한다. 위치 index 사용가능

  size ( ) : 리스트의 크기를 반환한다. 원소 개수

 

   import java.util.*;
   class ArrayListTest{
       public static void main(String[] args) {
       final int LIMIT =10;
       String source="0123456789abcdefghijABCDEFGHI!@#$%^&*()ZZZ";
       int length=source.length(); //문자열의 개수 보관
     
ArrayList list= new ArrayList(length/LIMIT+10); //메모리 할당
      
for (int i=0; i<length; i+=LIMIT)  {
         if(i+LIMIT<length)
           list.add(source.substring(i,i+LIMIT)); //10개씩 문자를 add 추가한다.
         else
           list.add(source.substring(i));  }

      for (int i=0; i<list.size();i++ )
           System.out.println(list.get(i)); }}

 

-출력 결과-

0123456789
abcdefghij
ABCDEFGHI!
@#$%^&*()Z
ZZ
계속하려면 아무 키나 누르십시오 . . .

  LinkedList 클래스

 

   ArrayList와 동일한 내용을 가지고 있다. 데이터 추가시 첫번째 원소와 마지막 원소에 데이터를

   추가할 수 있는 addFirst( ), addLast( ) 메서드를 가지고 있다. Queue 인터페이스를 구현하고

   있다.

 

    peek( ) : 데이터 가지고 온다 (복사)

   polll( ) : 데이터를 가지고 온다 (잘라내기)

 

  Stack 클래스

 

    Last in First Out 형식을 사용한다. 다른 List 와 동일하나 add가 push. romove가 pop으로

    메서드를 사용한다.

 

  Vector 클래스

 

   Vector 클래스의 기본 용량은 10이다.

 

   addElement ( ) : 데이터를 추가한다.

   capacity ( ) : 클래스의 용량값을 반환한다.

 

   import java.util.Vector;
   class VectorTest{
      public static void main(String[] args) {
         Vector[] v=new Vector[3];
         v[0]=new Vector(); //기본 용량 10
         v[1]=new Vector(5); //기본 용량 5
         v[2]=new Vector(5,3); //기본 용량 5 넘칠때 3씩 증가
         for (int i=0; i<v.length; i++)  {
            System.out.println("V["+i+"] size ="+v[i].size());
            System.out.println("V["+i+"] capacity = "+v[i].capacity());   }
         for (int i=0; i<3;i++ )  
             for (int j=0; j<44;j++ )
                  v[i].addElement(new Integer(j));   
         for (int i=0; i<v.length; i++)  {
             System.out.println("V["+i+"] size ="+v[i].size());
             System.out.println("V["+i+"] capacity = "+v[i].capacity()); } }}

-출력 결과-

V[0] size =0
V[0] capacity = 10
V[1] size =0
V[1] capacity = 5
V[2] size =0
V[2] capacity = 5
V[0] size =44
V[0] capacity = 80
V[1] size =44
V[1] capacity = 80
V[2] size =44
V[2] capacity = 44
계속하려면 아무 키나 누르십시오 . . .

 

 

  Set 인터페이스 

 

   순서를 유지하지 않는다. 데이터의 중복을 허용하지 않는다. 대표적인 구현 클래스는 HashSet,

   TreeSet 이 있다.

 

  HashSet 클래스

 

   데이터의 순서를 유지하지 않는다. 중복을 허용하지 않으며 정렬 기능이 없다.

 

   add( ) : 데이터를 삽입한다. 중복 데이터는 제외한다.

 

   import java.util.*;
   class HashSetTest{
      public static void main(String[] args) {
      Object [] objarr = {"1",new Integer(1),"2","2","3","3","4","4","4"};
      Set set=new HashSet();
      for (int i=0; i<objarr.length; i++)  {
         set.add(objarr[i]);   } //해당 배열의 원소를 삽입한다.
       System.out.println(set); }}

 

-출력 결과-

[3, 2, 1, 1, 4]  <-- 중복된 데이터는 제외된다.
계속하려면 아무 키나 누르십시오 . . .


  TreeSet 클래스

 

   HashSet과 같으며 정렬기능이 추가되어 있다.

 

   subSet ( ) : 시작 값부터 끝값까지 검색하여 반환한다.

 

 

  Map 인터페이스

 

  키(key)와 값(value)이 쌍을 이루는 데이터 집합으로 순서를 유지하지 않는다. 값의 중복은 허용

  되나 key의 중복은 허용하지 않는다. 대표적인 구현 클래스는 HashMap, TreeMap, Hashtable

  이 있다.

 

  Hashtable 클래스

 

    Enumeration 인터페이스를 사용해서 값을 가져온다.

 

   put(키값, 값) : 해당 키와 값을 저장합니다.

   containsKey( ) : key값에 해당되는 데이터가 있다면 true

   containsValue( ) : 해당 값에 해당되는 데이터가 있다면 true

   keys( ) : 현재 모든 키값을 반환합니다.

   get ( ) : key에 해당하는 값을 반환합니다.

 

   import java.util.Hashtable;
   import java.util.Enumeration;
   class HashtableTest{
      public static void main(String[] args) {
          Hashtable ht = new Hashtable();
          ht.put("1","가위");
          ht.put("2","바위");
          ht.put("3","보");
          if(ht.containsKey("1"))
              System.out.println("가위 포함되어 있음");
          if(ht.containsValue("보"))
              System.out.println("보는 3번으로 포함되어 있음");
         System.out.println("Hashtable의 크기는 : "+ht.size());
         ht.remove("1");
         Enumeration enu=ht.keys();
         while(enu.hasMoreElements())  {
             Object key=enu.nextElement();
             Object value=ht.get(key);
             System.out.println("키 = "+key+" 값 = "+value); } }}

 

-출력 결과-

가위 포함되어 있음
보는 3번으로 포함되어 있음
Hashtable의 크기는 : 3
키 = 3 값 = 보
키 = 2 값 = 바위
계속하려면 아무 키나 누르십시오 . . .

  HashMap 클래스

 

   import java.util.HashMap;
   import java.util.Scanner;
   class HashMapTest{
      public static void main(String[] args) {
      HashMap map= new HashMap();
      map.put("abc","1234");
      map.put("asdf","1111");
      map.put("asdf","1234");
      Scanner s= new Scanner(System.in); //화면에서 입력받음
      while(true)  {
          System.out.println("id와 password 입력하세요 ");
          System.out.print("id : ");
          String id=s.nextLine().trim(); //입력받고 trim으로 공백 제거
          
System.out.println();
          System.out.print("password :");
          String ps=s.nextLine().trim();

          if(!map.containsKey(id)){
               System.out.println("입력하신 id는 존재하지 않습니다");
               continue;
          }else{
                if(!map.get(id).equals(ps))
              System.out.println("password가 맞지 않습니다");
           else{
              System.out.println("id와 password가 일치합니다");
              break;}  }  }}}

-출력 결과-

id와 password 입력하세요
id : abee

password :12
입력하신 id는 존재하지 않습니다
id와 password 입력하세요
id : abc

password :12
password가 맞지 않습니다
id와 password 입력하세요
id : asdf

password :1234
id와 password가 일치합니다
계속하려면 아무 키나 누르십시오 . . .

 

Properties 클래스

 

Hashtable을 상속받고 있다. 설정값중 변할 수 있는 값들을 따로 저장하거나 읽을때 사용

 

 

 

 

 

  SimpleDateFormat 클래스

 

   fomat 메서드를 사용하여 현재 날자 시간 정보의 원하는 포맷형태로 반환한다.

  

   import java.text.SimpleDateFormat;
   import java.util.Date;
     class SimpleFormatTest{
        public static void main(String[] args) {
          Date today=new Date();
          SimpleDateFormat sd1,sd2,sd3,sd4;
          sd1=new SimpleDateFormat("yyyy년mm월dd일"); //각 해당 format 설정
          sd2=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss.SSS");//각 해당 format 설정
          sd3=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss a");//각 해당 format 설정
          sd4=new SimpleDateFormat("올해의 D번째 날입니다");//각 해당 format 설정
          System.out.println(sd1.format(today)); //format에 맞게 today 출력
          System.out.println(sd2.format(today));
          System.out.println(sd3.format(today));  
          System.out.println(sd4.format(today)); }}

   -출력 결과-

2009년16월19일
2009-16-19 14:16:34.875
2009-16-19 02:16:34 오후
올해의 323번째 날입니다
계속하려면 아무 키나 누르십시오 . . .

 

[출처] java.util 패키지|작성자 stryper_top