== HashSet ==
1. 출력시 저장된 순서가 유지되지 않는다.
2. *중복된 데이터를 저장할 수 없다.*
그러므로 Collection 내의 중복된 요소들을 저장하지 않고자 할때 많이 사용된다.
== LinkedHashSet ==
1. 출력시 저장된 순서가 유지된다.
2. 중복된 데이터를 저장할 수 없다.
그러므로 Collection 내의 중복된 요소들을 저장하지 않고자 할때 많이 사용된다.
// ======================================== [ HashSet ] ========================================//
1. Member 클래스의 객체만을 저장할 수 있는 HashSet 객체 mbrHashSet 을 생성한다.
public static void main(String[] args) {
System.out.println("\n===== HashSet =====\n");
// 1. Member 클래스의 객체만을 저장할 수 있는 HashSet 객체 mbrHashSet 을 생성한다.
Set<Member> mbrHashSet = new HashSet<>();
2. Member 클래스의 객체 7개를 생성하여 mbrHashSet 에 저장한다.
mbrHashSet.add(new Member("youjs","qwer1234$","유재석"));
mbrHashSet.add(new Member("eom","qwer1234$","엄정화"));
mbrHashSet.add(new Member("kanghd","qwer1234$","강호동"));
mbrHashSet.add(new Member("leess","qwer1234$","이순신"));
mbrHashSet.add(new Member("kimth","qwer1234$","김태희"));
mbrHashSet.add(new Member("kangkc","qwer1234$","강감찬"));
mbrHashSet.add(new Member("leehr","qwer1234$","이혜리")); // 이거랑
mbrHashSet.add(new Member("leehr","qwer1234$","이혜리")); // 이거는 다름
Member mbr_chaew_1 = new Member("chaew","qwer1234$","차은우");
Member mbr_chaew_2 = mbr_chaew_1;
mbrHashSet.add(mbr_chaew_1);
mbrHashSet.add(mbr_chaew_2);
3. mbrHashSet 에 저장되어진 모든 Member 들의 정보를 출력한다.
for(Member mbr : mbrHashSet) {
mbr.info_print();
} // end of for
~~~~~~ 또는 ~~~~~~
Set 계열은 저장된 데이터(요소)에 접근하기 위해서 Iterator 를 통해 접근이 가능하다.
Iterator<Member> it = mbrHashSet.iterator();
while(it.hasNext()) {
/* it.hasNext() 는
it 에서 현재 it가 가지고 있는 여러 Member 데이터중 하나를 끄집어내서 존재하는지를 알아보는 것이다.
존재하면 true, 존재하지 않으면 false.*/
Member mbr = it.next();
// 실제로 Member 를 it 에서 끄집어낸다.
// 그러면 끄집어낸 Member 는 더이상 it 에는 남아있지 않게 된다.
mbr.info_print();
} // end of while -----------------------------
//==========================================================================================//
[퀴즈 1] mbrHashSet 에 신규회원을 저장하려고 한다.
new Member("kimth","qwer1234$","김태환") 을 mbrHashSet 에 저장하려고 할 때
id 가 "kimth" key가 이미 존재한다면 아이디 kimth 은(는) 이미 사용중입니다. 라고 메세지 출력
"kimth" key가 존재하지 않으면 mbrHashSet 에 new Member("kimth","qwer1234$","김태환") 을 저장하도록 코드를 작성하시오.
String input_id = "kimth";
Iterator<Member> it_mbr = mbrHashSet.iterator();
boolean id_exists = false;
while(it_mbr.hasNext()) {
if( input_id.equals(it_mbr.next().id) ) {
id_exists = true;
break;
}
} // end of while -----------------------------------------------------
if(!id_exists) {
mbrHashSet.add(new Member(input_id,"qwer1234$","김태환"));
System.out.println("\n~~~ 저장성공 ~~~\n");
}
else {
System.out.println("아이디 "+ input_id + "는 이미 존재합니다. 다른 아이디를 입력하세요.");
}
[퀴즈 2] mbrHashSet 에 저장된 회원들 중 아이디가 eom 와 kangkc 인 회원들만 회원정보를 출력하세요
String[] id_arr = {"eom","kangkc","superman"};
/*
또는
String ides = "eom,kangkc,superman";
String[] id_arr_2 = ides.split("\\,");
*/
for(int i=0; i<id_arr.length; i++) {
Iterator<Member> itr_mbr = mbrHashSet.iterator();
boolean idExists = false;
while(itr_mbr.hasNext()) {
Member mbr = itr_mbr.next();
if( id_arr[i].equals(mbr.id) ) {
mbr.info_print();
idExists = true;
break;
}
} // end of while ---------------------------------------
if(!idExists) {
System.out.println("아이디가" + id_arr[i] +"인 회원은 존재하지 않습니다.");
}
} // end of for ---------------------------------------------
// ===================================== [ LinkedHashSet ] =====================================//
1. Member 클래스의 객체만을 저장할 수 있는 LinkedHashSet 객체 mbrLinkedHashSet 을 생성한다.
Set<Member> mbrLinkedHashSet = new LinkedHashSet<>();
2. Member 클래스의 객체 7개를 생성하여 mbrLinkedHashSet 에 저장한다.
mbrLinkedHashSet.add(new Member("youjs","qwer1234$","유재석"));
mbrLinkedHashSet.add(new Member("eom","qwer1234$","엄정화"));
mbrLinkedHashSet.add(new Member("kanghd","qwer1234$","강호동"));
mbrLinkedHashSet.add(new Member("leess","qwer1234$","이순신"));
mbrLinkedHashSet.add(new Member("kimth","qwer1234$","김태희"));
mbrLinkedHashSet.add(new Member("kangkc","qwer1234$","강감찬"));
mbrLinkedHashSet.add(new Member("leehr","qwer1234$","이혜리")); // 이거랑
mbrLinkedHashSet.add(new Member("leehr","qwer1234$","이혜리")); // 이거는 다름
Member mbr_chaew_3 = new Member("chaew","qwer1234$","차은우");
Member mbr_chaew_4 = mbr_chaew_3;
mbrLinkedHashSet.add(mbr_chaew_3);
mbrLinkedHashSet.add(mbr_chaew_4);
3. mbrHashSet 에 저장되어진 모든 Member 들의 정보를 출력한다.
for(Member mbr : mbrLinkedHashSet) {
mbr.info_print();
} // end of for
~~~~~~ 또는 ~~~~~~
Set 계열은 저장된 데이터(요소)에 접근하기 위해서 Iterator 를 통해 접근이 가능하다.
Iterator<Member> it_2 = mbrLinkedHashSet.iterator();
it.hasNext() 는
it 에서 현재 it가 가지고 있는 여러 Member 데이터중 하나를 끄집어내서 존재하는지를 알아보는 것이다.
존재하면 true, 존재하지 않으면 false.
while(it.hasNext()) {
/* it.hasNext() 는
it 에서 현재 it가 가지고 있는 여러 Member 데이터중 하나를 끄집어내서 존재하는지를 알아보는 것이다.
존재하면 true, 존재하지 않으면 false.*/
Member mbr = it_2.next();
// 실제로 Member 를 it 에서 끄집어낸다.
// 그러면 끄집어낸 Member 는 더이상 it 에는 남아있지 않게 된다.
mbr.info_print();
} // end of while -----------------------------
//==========================================================================================//
[퀴즈 1] mbrLinkedHashSet 에 신규회원을 저장하려고 한다.
new Member("kimth","qwer1234$","김태환") 을 mbrLinkedHashSet 에 저장하려고 할 때
id 가 "kimth" key가 이미 존재한다면 아이디 kimth 은(는) 이미 사용중입니다. 라고 메세지 출력
"kimth" key가 존재하지 않으면 mbrLinkedHashSet 에 new Member("kimth","qwer1234$","김태환") 을 저장하도록 코드를 작성하시오.
String inputId = "kimth";
Iterator<Member> itMbr = mbrLinkedHashSet.iterator();
boolean idExists = false;
while(itMbr.hasNext()) {
if( inputId.equals(itMbr.next().id) ) {
idExists = true;
break;
}
} // end of while -----------------------------------------------------
if(!idExists) {
mbrLinkedHashSet.add(new Member(inputId,"qwer1234$","김태환"));
System.out.println("\n~~~ 저장성공 ~~~\n");
}
else {
System.out.println("아이디 "+ inputId + "는 이미 존재합니다. 다른 아이디를 입력하세요.");
}
[퀴즈 2] mbrHashSet 에 저장된 회원들 중 아이디가 eom 와 kangkc 인 회원들만 회원정보를 출력하세요
System.out.println("\n===== [퀴즈] =====\n");
String[] idArr = {"eom","kangkc","superman"};
for(int i=0; i<idArr.length; i++) {
Iterator<Member> itr_mbr = mbrLinkedHashSet.iterator();
boolean idExist = false;
while(itr_mbr.hasNext()) {
Member mbr = itr_mbr.next();
if( idArr[i].equals(mbr.id) ) {
mbr.info_print();
idExist = true;
break;
}
} // end of while ---------------------------------------
if(!idExist) {
System.out.println("아이디가" + idArr[i] +"인 회원은 존재하지 않습니다.");
}
} // end of for ---------------------------------------------'Java' 카테고리의 다른 글
| 제네릭(Generic) (0) | 2022.06.30 |
|---|---|
| 컬렉션(Collection) - 6. Properties (0) | 2022.06.30 |
| 컬렉션(Collection) - 4. HashMap (0) | 2022.06.29 |
| 컬렉션(Collection) - 3. LinkedList (0) | 2022.06.29 |
| 컬렉션(Collection) - 2. ArrayList (0) | 2022.06.28 |