반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- StringReader
- include 지시자
- 상관 서브 쿼리
- 리눅스셋팅
- 상관서브쿼리
- include액션태그
- StringWriter
- MemoryStream
- String char[] 형변환
- 표현 언어
- Linux세팅
- char[] String 형변환
- 리눅스세팅
- sleep()메소드
- ObjectInputStream
- first-child
- InputDialog
- ThreadGroup()
- include지시자
- first-of-child
- 아이디중복
- interrupted()
- ID중복
- isinterrupted()
- interrupt()
- 메모리스트림
- Linux셋팅
- 동기화
- Daemon()
- 스레드그룸
Archives
- Today
- Total
다연이네
[days23] 컬렉션클래스<Map> - HashMap, Hashtable 본문
반응형
Map
entry(key + value) 한 쌍으로 관리
종류
- HashMap (동기화X)
- HashTable (동기화O)
( * HashTable이 먼저 나온 후 HashMap이 나왔다. (해시맵 사용 권장) )
Hash 저장될때 해싱기법으로 처리됨
hashcode(), equals() -> 저장
key - 컬렉션 내에서 중복X, 유일성
value - 중복 가능
회원 로그인하는 HashMap
HashMap<String, String> hm = new HashMap<>();
//key, value
// ID, PW
hm.put("dayeon", "1234");
hm.put("admin", "1234");
hm.put("hong", "1234");
hm.put(null, "2342");
hm.put("kim", null);
System.out.println(hm.size()); // 엔트리의 갯수: 5 (맵에서는 요소가 아니라 엔트리라고 쓰자)
String id, pw; //똑같은지 물어봐서 맞으면 로그인 처리 (아니면 id/pw오류 메시지)
try(Scanner scanner = new Scanner(System.in)) {
System.out.print("> 로그인할 아이디와 비밀번호를 입력 ");
id = scanner.next();
pw= scanner.next(); //항상 입력값에 대한 유효성 검사가 필수지만 생략
if( hm.containsKey(id) ) {
String value = hm.get(id);
if(pw.equals(value)) {
System.out.println("로그인 성공");
}else {
System.out.println("비밀번호 오류입니다.");
}
}else {
System.out.println("존재하지 않는 아이디입니다.");
}
} catch (Exception e) {
e.printStackTrace();
}
-모든 Key값만 출력
-모든 Value값만 출력
- key / Value 형식으로 출력
Set<String> ks = hm.keySet();
Iterator<String> ir = ks.iterator();
//key / value 출력
while (ir.hasNext()) {
String k = ir.next();
String v = hm.get(k); //
System.out.printf("%s / %s\n", k , v);
}
//모든 key값만 출력
Collection<String> vc2 = hm.keySet();
ir = vc2.iterator();
while (ir.hasNext()) {
String v = ir.next();
System.out.println( v );
}
//모든 value값만 출력
Collection<String> vc = hm.values();
ir = vc.iterator();
while (ir.hasNext()) {
String v = ir.next();
System.out.println( v );
}
//key / value 출력 - 엔트리 사용하기
Set<Entry<String, String>> es = hm.entrySet();
Iterator<Entry<String, String>> ir2 = es.iterator(); // Set은 iterator 쓴다 당연히
while (ir2.hasNext()) {
/*Map.*/Entry</*java.lang.*/String, /*java.lang.*/String> entry = ir2.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.printf("%s / %s\n", key , value);
}
Hashtable
package review;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map.Entry;
import java.util.Set;
public class Re08 {
public static void main(String[] args) {
//Hashtable 컬렉션 클래스
ArrayList<Person> list1 = new ArrayList<Person>();
list1.add(new Person("배다연", 23));
list1.add(new Person("김동준", 24));
list1.add(new Person("카라멜", 1));
ArrayList<Person> list2 = new ArrayList<Person>();
list2.add(new Person("박새로이", 30));
list2.add(new Person("조이서", 20));
list2.add(new Person("오수아", 30));
LinkedHashMap<Integer, ArrayList<Person>> class5= new LinkedHashMap<>();
//조 조원들이 들어있는 어레이
class5.put(1, list1); //1조
class5.put(2, list2); //2조
Set<Entry<Integer, ArrayList<Person>>> set = class5.entrySet();
Iterator<Entry<Integer, ArrayList<Person>>> ir = set.iterator();
while (ir.hasNext()) {
Entry<Integer,ArrayList<review.Person>> entry = ir.next();
System.out.printf("[%d조]\n",entry.getKey());
ArrayList<Person> val = entry.getValue();
Iterator<Person> irr= val.iterator();
while (irr.hasNext()) {
Person person = irr.next();
System.out.printf("%s %d\n", person.name, person.age);
}
}
}
}
class Person{
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
출력값
[1조]
배다연 23
김동준 24
카라멜 1
[2조]
박새로이 30
조이서 20
오수아 30
반응형
'Java' 카테고리의 다른 글
[days23] 컬렉션 클래스 - Properties (0) | 2020.10.21 |
---|---|
[days23] 컬렉션클래스<Map> - TreeMap (0) | 2020.10.21 |
[days23] 컬렉션 클래스<Set> - TreeSet (0) | 2020.10.21 |
[days22] sort(정렬) (0) | 2020.10.21 |
[days22] 컬렉션 클래스<Set> - HashSet (0) | 2020.10.21 |
Comments