10일차 : 확장for문, 제네릭, Calendar 클래스, map, 자바의 컬렉션 프레임워크
확장 for문 - 제네릭 사용, 저장된 요소를 하나씩 자동으로 꺼내와 저장변수에 저장하고 반복문 수행
/* <<확장 for문 >> - jdk5.0 이상에서 추가된 기능 - 형식 for(저장변수 : 배열 또는 컬렉션 객체){ 반복문; ... } 컬렉션 객체에 저장된 요소를 하나씩 자동으로 꺼내와 저장변수에 저장하고 반복문을 수행한다. */ import java.util.*; class For1{ public static void main(String[] args) { ArrayList<String> list=new ArrayList<String>(); list.add("홍길동"); list.add("김철수"); list.add("김영희"); list.add("김태희"); //확장 for사용하기 //list에 저장된 요소를 꺼내와 str에 저장 for(String str:list){ System.out.println(str); } } }
제네릭
import java.util.ArrayList; import java.util.Iterator; class Generic01{ public static void main(String[] args) { //ArrayList에 String타입의 객체만 지정하도록 설정 //제네릭 <자료형>지정을 해주지 않으면 제한없이 넣을 수 있고 문법적인 오류가 나지않아 실행 시에 잘못된 타입이 잘 못 들어갈 수 있다
ArrayList<String> list=new ArrayList<String>();//ArrayList에는 String객체만 저장할 수 있다는 것 list.add("진달래"); list.add("개나리"); list.add("민들레"); //list.add(100); --String타입만 가능하므로 정수형 객체를 넣으면 컴파일 오류 발생 for(int i=0; i<list.size(); i++){ //제네릭을 사용하면 객체를 꺼내올 때 형 변환을 하지 않아도 됨 String str=list.get(i); System.out.println(str); } System.out.println("iterator사용"); Iterator<String> it=list.iterator(); while(it.hasNext()){ //형변환 없이 사용 String aa=it.next(); System.out.println(aa); } } }
날짜 윤년 확인
import java.util.*; class GregorianCalendar01 { public static void main(String[] args) { GregorianCalendar cal=new GregorianCalendar(); int y=cal.get(Calendar.YEAR); int m=cal.get(Calendar.MONTH)+1; int d=cal.get(Calendar.DATE); System.out.println(y+"년 "+m+"월 "+d+"일"); //public boolean isLeapYear(int year): 윤년인지 아닌지 판별 boolean yy=cal.isLeapYear(2012); if(yy){ System.out.println("윤년입니다."); }else{ System.out.println("윤년이 아닙니다."); } //public int getActualMinimum(int field) //해당 필드 중에서 가장 큰 값 얻어오기 int date=cal.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println("이번 달은 "+date+"일까지 있습니다."); } }
날짜 년, 월, 일, 요일 출력 및 현재 시간 출력
import java.util.Calendar; class Calendar01{ public static void main(String[] args) { //Calendar static Calendar.getInstance(); Calendar cal=Calendar.getInstance(); //System.out.println(cal); //public int get(int field) //public static final int YEAR int year=cal.get(Calendar.YEAR); //년 int month=cal.get(Calendar.MONTH)+1; //월. 1월은 0부터 시작 int date=cal.get(Calendar.DATE); //'일 int day=cal.get(Calendar.DAY_OF_WEEK); //요일 얻어오기 System.out.println(year+"년 "+month+"월 "+date+"일");//오늘날짜 출력 switch(day){ //오늘 날짜 출력 case Calendar.SUNDAY:System.out.println("일요일"); break; case Calendar.MONDAY:System.out.println("월요일"); break; case Calendar.TUESDAY:System.out.println("화요일"); break; case Calendar.WEDNESDAY:System.out.println("수요일"); break; case Calendar.THURSDAY:System.out.println("목요일"); break; case Calendar.FRIDAY:System.out.println("금요일"); break; case Calendar.SATURDAY:System.out.println("토요일"); break; } //현재 시각을 출력해 보세요. xx시 xx분 xx초 int hour=cal.get(Calendar.HOUR);//시 HOUR_OF_DAY: 24시간 단위로 시간을 얻어옮 int minute=cal.get(Calendar.MINUTE); //분 int second=cal.get(Calendar.SECOND); //초 System.out.println(hour+"시 "+minute+"분 "+second+"초"); //pubilc final void set(int year, int month, int date) cal.set(2001,1,1); //2001년 2월 1일로 설정 year=cal.get(Calendar.YEAR); //년 month=cal.get(Calendar.MONTH)+1;//월. 1월은 0부터 시작 date=cal.get(Calendar.DATE); //'일 day=cal.get(Calendar.DAY_OF_WEEK);//요일 얻어오기 System.out.println(year+"년 "+month+"월 "+date+"일"); } }
Hash Set - 객체 저장하고 저장된 객체 꺼내오기
import java.util.HashSet; import java.util.Iterator; class HashSet01{ public static void main(String[] args) { HashSet hs=new HashSet(); //HashSet에 객체 저장하기 (저장할 때 순서가 없음) hs.add("봄"); hs.add("여름"); hs.add("가을"); hs.add("겨울"); hs.add("여름"); //중복데이터 허용 안함 - 오류가 나지 않고 이전 데이터 덮어 씌우기 //HashSet에 저장된 객체 꺼내오기 Iterator it=hs.iterator(); while(it.hasNext()){ String ss=(String)it.next(); System.out.println(ss); } } }
Map
/* << map(★★) >> - Key와 Value가 한 쌍으로 저장되는 형태의 자료구조 - Key는 중복될 수 없으며 Value는 중복이 가능하다. - 검색시 유용하다. */ import java.util.HashMap; class Map01{ public static void main(String[] args) { //제네릭을 사용하지 않은 경우 HashMap map=new HashMap(); //map은 key와 value가 한 쌍으로 저장 //public V put(K key, V value) -모두 오브젝트 타입 map.put(1, "홍길동"); //key값을 임의로 정해 넣는다 map.put(2, "김철수"); map.put(3, "이순신"); //public V get(Object key) //key(2)에 해당하는 value(김철수)를 얻어옴 String value=(String)map.get(2); System.out.println(value); ////////////////////////// 제네릭을 사용 한 경우 //////////////////////////////// //key값은 Integer, Value값은 String을 저장하는 HashMap생성 HashMap<Integer, String> map1=new HashMap<Integer, String>();//<Integer, String> 오로지 클래스타입만 쓸 수 있음
map1.put(new Integer(1), "가가가"); map1.put(1, "가가가"); map1.put(2, "나나나"); map1.put(3, "다다다"); map1.put(4, "라라라"); //제네릭을 사용했으므로 형 변환 하지 않아도 됨 String ss=map1.get(3); System.out.println("key:3"+",value: "+ss); } }
Map - 저장된 아이디 검색하고 없으면 해당 아이디가 존재하지 않는다는 메시지 출력
import java.util.*; class Member{ private String id; private String pwd; public Member(String id, String pwd){ this.id=id; this.pwd=pwd; } public void print(){ System.out.println("id: "+id); System.out.println("pwd: "+pwd); } } class Map02{ public static void main(String[] args) { //key값을 id로 갖고 value로 Member객체를 갖는 Map객체 생성 Map<String, Member> map=new HashMap<String, Member>(); map.put("song", new Member("song", "1234")); map.put("kim", new Member("kim", "0000")); map.put("lee", new Member("lee", "9999")); //key값은 중복될 수 없다. 동일한 키 값이 존재하면 덮어씌우기가 됨 map.put("kim", new Member("kim", "6666"));
System.out.println("찾는 아이디 입력"); Scanner scan=new Scanner(System.in); String id=scan.next(); Member mm=map.get(id); if(mm!=null){ mm.print(); }else{ System.out.println("해당 아이디가 존재하지 않습니다."); } } }
TreeSet
import java.util.TreeSet; import java.util.Iterator; class TreeSet01 { public static void main(String[] args) { //TreeSet은 객체를 정렬해서 저장함 TreeSet ts=new TreeSet(); ts.add("박주영"); ts.add("구자철"); ts.add("기성용"); ts.add("박지성"); Iterator it=ts.iterator(); while(it.hasNext()){ String str=(String)it.next(); System.out.println(str); } } }
vector클래스 - vector객체에 저장하고 객체의 수와 백터의 용량 출력, 객체를 꺼내와 Enumeration와 Iterator를 이용해서 출력
import java.util.Vector; import java.util.Enumeration; import java.util.Iterator; /* << vector클래스 >> - 객체를 배열처럼 관리해주는 클래스 -ArrayList와 유사하지만 차이점은 Vector클래스는 스레드의 동기화를 지원하고 ArrayList는 스레드의 동기화를 지원하지 않는다. */ class Vector01 { public static void main(String[] args) { Vector vec=new Vector(8); //Vector에 객체 저장하기 vec.add(new String("하나")); vec.add(new String("둘")); vec.add(new String("세엣")); vec.add(new String("넷")); vec.add(new String("다섯")); vec.add(new String("여섯")); vec.add(new String("일곱")); vec.add(new String("여덟")); System.out.println("객체의 수: "+vec.size()); //public int capacity() System.out.println("백터의 용량: "+vec.capacity()); //Vector에 저장된 객체 꺼내오기 for(int i=0; i<vec.size(); i++){ String str=(String)vec.get(i); //vec.get(i): x번째 것을 꺼내와라 System.out.println(str); } System.out.println("Enumeration을 이용해서 출력"); //public Enumeration<E> elements()
Enumeration em=vec.elements(); while(em.hasMoreElements()){ String ss=(String)em.nextElement(); System.out.println(ss); } System.out.println("Iterator을 이용해서 출력"); //public Iterator<E> iterator() //Iterator<E>: 순차적으로 next하여 데이터를 꺼내오는 애 Iterator it=vec.iterator(); //사용하려면 import해줘야 한다 while(it.hasNext()){ //다음 요소가 있으면 true String ss=(String)it.next();//다음요소 리턴 System.out.println(ss); } } }
Quiz01
/* ArrayList에 학생이름 다섯 명을 저장하고 Iterator를 사용해서 전체를 출력해 보세요. */ import java.util.ArrayList; import java.util.Iterator; class Quiz01 { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add(new String("원빈")); list.add(new String("장동건")); list.add(new String("김주원")); list.add(new String("조인성")); list.add(new String("조니뎁")); System.out.println("Iterator을 이용해서 출력"); //public Iterator<E> iterator() Iterator it=list.iterator(); //ArrayLisst로 학생이름 저장했으니까 list.iterator(); while(it.hasNext()){ String ss=(String)it.next();//iterator타입으로 받기 위해 형변환 System.out.println(ss); } }
}
Quiz02
import java.util.*; //java.util 패키지 안의 모든 클래스 import하기 class Member{ private String id; private String pwd; public Member(String id, String pwd){ this.id=id; this.pwd=pwd; } public void print(){ System.out.println("id: "+id); System.out.println("pwd: "+pwd); } } class Quiz02 { public static void main(String[] args) { //ArrayList에 Member객체를 세 개 저장하고 Iterator를 사용해서 데이터를 꺼내와 //출력해 보세요.(제네릭 사용) ArrayList<Member> list=new ArrayList<Member>(); list.add(new Member("aaa", "1234")); list.add(new Member("bbb", "5678")); list.add(new Member("ccc", "9012")); System.out.println("Iterator를 사용헤서 데이터를 꺼내와 출력"); Iterator<Member> it=list.iterator(); while(it.hasNext()){ Member mem=it.next(); mem.print(); } } }
Quiz03
/* Map에 Key 값으로 아이디, Value값으로 전화번호를 저장하는 프로그램을 작성하고 아이디로 전화번호를 검색해 보세요. */ //import java.util.*; import java.util.Scanner; import java.util.HashMap; import java.util.Set; import java.util.Iterator; class Quiz03 { public static void main(String[] args) { //key값은 Integer, Value값은 String을 저장하는 HashMap생성 HashMap<String, String> map=new HashMap<String, String>(); map.put("aaa", "123-456"); map.put("bbb", "456-789"); map.put("ccc", "101-1234"); Scanner scan = new Scanner(System.in); System.out.println("찾을 아이디를 입력하세요."); String id=scan.next(); //Key값이 id인 Value(전화번호)얻어오기, key가 존재하지 않으면 null값 저장 String value=map.get(id); if(value!=null){ System.out.println(id + ": "+value); }else{ System.out.println("해당 아이디가 존재하지 않습니다."); } System.out.println("HashMap에 저장된 모든 KEY와 VALUE출력"); //public set<K> KeySet() ==>Key를 set에 담아서 리턴 Set<String> st=map.keySet();
//Iterator<E> iterator() Iterator<String> it=st.iterator(); //it는 다음 요소(28행)가 있는지 확인 while(it.hasNext()){ //다음 요소가 있다면 String key=it.next(); //다음 요소(KEY)얻어오기 String vv=map.get(key);//KEY에 해당하는 VALUE얻어오기 System.out.println(key+": "+vv); } } }
Quiz04
/* 자신의 생년월일을 입력받아 태어난 요일을 출력해 보세요. */ import java.util.*; class Quiz04{ public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.print("태어난 년도를 입력하세요: "); int y=scan.nextInt(); System.out.print("태어난 달(월)을 입력하세요: "); int m=scan.nextInt(); System.out.print("태어난 날짜를 입력하세요: "); int d=scan.nextInt(); //System.out.println("당신이 태어난 요일은 "); GregorianCalendar cal=new GregorianCalendar(y,m-1,d); int day=cal.get(Calendar.DAY_OF_WEEK); //첫째날의 요일 String ss=""; switch(day){ case Calendar.SUNDAY:ss="일";break; case Calendar.MONDAY:ss="월";break; case Calendar.TUESDAY:ss="화";break; case Calendar.WEDNESDAY:ss="수";break; case Calendar.THURSDAY:ss="목";break; case Calendar.FRIDAY:ss="금";break; case Calendar.SATURDAY:ss="토";break; } System.out.println("당신이 태어난 요일은 " + ss +"요일입니다."); } } /*switch(day){//날짜 출력 case Calendar.SUNDAY:System.out.println("당신이 태어난 요일은 일요일 입니다. "); break; case Calendar.MONDAY:System.out.println("당신이 태어난 요일은 월요일 입니다."); break; case Calendar.TUESDAY:System.out.println("당신이 태어난 요일은 화요일 입니다."); break; case Calendar.WEDNESDAY:System.out.println("당신이 태어난 요일은 수요일 입니다."); break; case Calendar.THURSDAY:System.out.println("당신이 태어난 요일은 목요일 입니다."); break; case Calendar.FRIDAY:System.out.println("당신이 태어난 요일은 금요일 입니다."); break; case Calendar.SATURDAY:System.out.println("당신이 태어난 요일은 토요일 입니다."); break;*/
[ 과 제 ]
'JAVA 기초' 카테고리의 다른 글
12일차 : IO, 입출력 (0) | 2012.08.12 |
---|---|
11일차 : 예외처리, IO(InputStream,OutputStream), 패키지 만들기 (0) | 2012.08.12 |
9일차 : ArrayList, Character, String클래스, String Builder, Wrapper 클래스 (0) | 2012.08.11 |
8일차 : 추상클래스, 인터페이스, Object클래스 (0) | 2012.08.11 |
7일차 : 오버로딩, 오버라이딩, 상속 (0) | 2012.08.11 |