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();
}
}