List, Set, Map -> 인터페이스
List
중복이 있고 순서가 있음
- Vector -> 동기화 : 속도가 느려질 수 있음.
- ArrayList -> 비동기화
※ArrayList 정렬
Collections.sort(this); //올림차순
Collections.sort(this, Collections.reverseOrder() ); //내림차순
ArrayList 예제
객체를 요소로 갖는 ArrayList 응용 예제
Set
중복이 없고 순서도 없음
-HashSet
-TreeSet(정렬)
TreeSet 예제
Map
검색할 때는 가장 빠름. 키값과 밸류값.
-HashTable -> 동기화
-HashMap -> 비동기화
TreeMap은 정렬 제공
기본적으로 객체가 저장된다.
또한 여러가지 타입이 저장될 수 있다.
꺼낼때는 Object형이므로 적절하게 다운캐스팅.
잘못 다운캐스팅하면 클래스캐스팅 오류가 실행시에 발생된다.
HashMap 예제 - Key와 Value로 저장된다.
TreeMap 예제 - HashMap과 비슷하지만 키값을 기준으로 정렬된다.
Generics -> 미리 들어갈 객체 타입을 넣어주는 것. <Integer>
Integer intObject = 5; // autoBoxing
int intVar = intObject; // unBoxing
HashMap, Object 인수, Set 등을 활용한 예제
List
중복이 있고 순서가 있음
- Vector -> 동기화 : 속도가 느려질 수 있음.
- ArrayList -> 비동기화
※ArrayList 정렬
Collections.sort(this); //올림차순
Collections.sort(this, Collections.reverseOrder() ); //내림차순
ArrayList 예제
import java.util.ArrayList; public class ArrayListExam { ArrayList<String> list = new ArrayList<String>(5); /** * LIST에 항목추가 */ public void addItem() { list.add("A"); list.add("B"); list.add("c"); this.listPrint(); list.remove(1); this.listPrint(); list.add(0, "0"); list.add(1, "1"); this.listPrint(); } /** * LIST 출력 */ public void listPrint() { System.out.println("size : " + list.size()); System.out.println("list : " + list); } public static void main(String[] args) { ArrayListExam arrayListExam = new ArrayListExam(); arrayListExam.addItem(); } }
객체를 요소로 갖는 ArrayList 응용 예제
import java.util.ArrayList; class BoardVO { private int articleNumber; //글 번호 private String articleWriter; //글 작성자 private String articleTitle; //글 제목 private String articleContent; //글 내용 //Getter와 Setter 설정 public int getArticleNumber() { return articleNumber; } public void setArticleNumber(int articleNumber) { this.articleNumber = articleNumber; } public String getArticleWriter() { return articleWriter; } public void setArticleWriter(String articleWriter) { this.articleWriter = articleWriter; } public String getArticleTitle() { return articleTitle; } public void setArticleTitle(String articleTitle) { this.articleTitle = articleTitle; } public String getArticleContent() { return articleContent; } public void setArticleContent(String articleContent) { this.articleContent = articleContent; } //기본 생성자 BoardVO() { } //인수로 받은 값을 전역변수에 넣는 생성자 BoardVO(int articleNumber, String articleWriter, String articleTitle, String articleContent) { this.articleNumber = articleNumber; this.articleWriter = articleTitle; this.articleTitle = articleTitle; this.articleContent = articleContent; } } public class BoardBL extends ArrayList<BoardVO> { /** * BoardVO ArrayList에 글번호, 작성자, 제목, 내용을 넣는 메소드 * 이 메소드를 사용하면 자동으로 ArrayList가 추가된다. * @param articleNumber * @param articleWriter * @param articleTitle * @param articleContent */ public void addArticle(int articleNumber, String articleWriter, String articleTitle, String articleContent) { BoardVO vo = new BoardVO(); vo.setArticleNumber(articleNumber); vo.setArticleWriter(articleWriter); vo.setArticleTitle(articleTitle); vo.setArticleContent(articleContent); this.add(vo); } /** * BoardVO ArrayList에 저장된 내용들을 모두 출력해주는 메소드 * for 문으로 모든 내용을 형식에 맞추어 출력해준다. */ public void printArticle() { for(BoardVO vo : this) { System.out.printf("%-2d번글\t%-12s\n[%s]\n\"%s\"%n%n%n", vo.getArticleNumber(), vo.getArticleWriter(), vo.getArticleTitle(), vo.getArticleContent()); } } public static void main(String[] args) { BoardBL boardBL = new BoardBL(); //임의의 글내용을 추가해준다. boardBL.addArticle(1, "홍길동", "첫번째글 제목", "안녕하세요. 첫번째 글입니다."); boardBL.addArticle(2, "손오공", "두번째글 제목", "안녕하세요. 두번째 글입니다."); boardBL.addArticle(3, "브루스웨인", "다크나이트 라이즈 개봉", "안녕하세요. 세번째 글입니다."); boardBL.addArticle(4, "손오공", "두번째글 제목", "안녕하세요. 네번째 글입니다."); boardBL.addArticle(5, "손오공", "두번째글 제목", "안녕하세요. 다섯번째 글입니다."); //입력한 글들을 출력해준다. boardBL.printArticle(); } }
Set
중복이 없고 순서도 없음
-HashSet
-TreeSet(정렬)
TreeSet 예제
import java.util.Iterator; import java.util.TreeSet; public class LottoTreeSet { TreeSet<integer> tree = new TreeSet<integer>(); //Integer 오브젝트를 담는 트리셋 선언 public void lottoNumber() { //TreeSet의 사이즈가 6개가 될때까지 반복된다. while( tree.size() != 6 ) { //TreeSet에 임의의 숫자를 넣게되는데, TreeSet의 특성상 중복된 숫자는 들어가지 않는다. tree.add((int)(Math.random()*45) + 1); } //TreeSet 자체로는 출력하기 어려우므로, Iterator를 사용해 출력한다. //출력을 위한 Integer 오브젝트를 담는 Iterator를 선언 Iterator<integer> i = tree.iterator(); while (i.hasNext()) //다음 오브젝트가 존재할 경우에만, { System.out.println(i.next() + "\t"); //로또 번호 출력 } } public static void main(String[] args) { LottoTreeSet lotteTreeSet = new LottoTreeSet(); lotteTreeSet.lottoNumber(); //로또 번호 생성 메소드 } }
Map
검색할 때는 가장 빠름. 키값과 밸류값.
-HashTable -> 동기화
-HashMap -> 비동기화
TreeMap은 정렬 제공
기본적으로 객체가 저장된다.
또한 여러가지 타입이 저장될 수 있다.
꺼낼때는 Object형이므로 적절하게 다운캐스팅.
잘못 다운캐스팅하면 클래스캐스팅 오류가 실행시에 발생된다.
HashMap 예제 - Key와 Value로 저장된다.
import java.util.HashMap; import java.util.Set; public class MapExam { //Key와 Value형태로 넣는 HashMap선언 HashMap<Integer, String> map = new HashMap<Integer, String>(); public void addMap() { //임의의 값을 해쉬맵에 추가 map.put(22, "서울"); map.put(44, "부산"); map.put(66, "대구"); map.put(55, "광주"); map.put(11, "전주"); } public void printMap() { //해쉬맵의 키 테이블을 가져오기 Set<Integer> set = map.keySet(); //해쉬맵의 값을 출력 for(Integer i : set) System.out.println(i + "번의 값 : " + map.get(i)); } public static void main(String[] args) { MapExam mapExam = new MapExam(); mapExam.addMap(); mapExam.printMap(); } } // 정렬되지 않는 값이 출력된다.
TreeMap 예제 - HashMap과 비슷하지만 키값을 기준으로 정렬된다.
import java.util.Set; import java.util.TreeMap; public class MapExam { //Key와 Value형태로 넣는 TreeMap선언 TreeMap<Integer, String> map = new TreeMap<Integer, String>(); public void addMap() { //임의의 값을 트리맵에 추가 map.put(22, "서울"); map.put(14, "부산"); map.put(62, "대구"); map.put(53, "광주"); map.put(16, "전주"); } public void printMap() { //트리맵의 키 테이블을 가져오기 Set<Integer> set = map.keySet(); //트리맵의 값을 출력 for(Integer i : set) System.out.println(i + "번의 값 : " + map.get(i)); } public static void main(String[] args) { MapExam mapExam = new MapExam(); mapExam.addMap(); mapExam.printMap(); } } // 정렬된 값이 출력된다.
Generics -> 미리 들어갈 객체 타입을 넣어주는 것. <Integer>
Integer intObject = 5; // autoBoxing
int intVar = intObject; // unBoxing
HashMap, Object 인수, Set 등을 활용한 예제
import java.util.HashMap; import java.util.Set; class Person { private String name; private int age; private String addr; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public Person() { } public Person(String name, int age, String addr) { this.setName(name); this.setAge(age); this.setAddr(addr); } @Override public String toString() { return getName() + "\t" + getAge() + "\t" + getAddr(); } } public class PersonProcess extends HashMap<String, Person> { /** * HashMap에 값 추가하는 메소드 */ public void addPerson() { this.put("a", createPerson("안재하", 29, "서울")); this.put("b", createPerson("홍길동", 28, "울릉도")); this.put("c", createPerson("유오성", 27, "부산")); this.put("d", createPerson("웨인", 26, "고담시")); } /** * Person객체를 생성하여 리턴해주는 메소드 */ public Person createPerson(String name, int age, String addr) { Person person = new Person(name, age, addr); return person; } /** * HashMap의 모든 정보 출력하기 */ public void printHashMap() { Set<String> aaa = this.keySet(); for (String s : aaa) { printHashMap2(s); } } /** * HashMap에서 특정 key값에 해당하는 정보 출력하기 */ public void printHashMap2(String key) { if( this.containsKey(key) ) { System.out.println(this.get(key)); System.out.println(); } } /** * @param args */ public static void main(String[] args) { PersonProcess personProcess = new PersonProcess(); personProcess.addPerson(); personProcess.printHashMap(); } }