반응형
Map 출력
List 순서 0, 중복 0 , Set 순서 X, 중복 X, Map 키-값 형태로 저장,키는 중복X, 값은 중복 O
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Map01 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "홍길동");
map.put("2", "김길동");
map.put("3", "김길동");
map.put("1", "홍길동");
System.out.println(map);//{1=홍길동, 2=김길동, 3=김길동}
System.out.println(map.size()); //3
String result = map.get("2");
System.out.println(result); //김길동
System.out.println(map.keySet());//[1, 2, 3]
// Set<String> set = map.keySet();
// System.out.println(set);//[1, 2, 3]
List<String> list = new ArrayList<String>(map.keySet());
System.out.println(list);//[1, 2, 3]
for (int i = 0; i < map.size(); i++) {
System.out.print(list.get(i) + " : ");
System.out.println(map.get(list.get(i)));
}
//map - > set -> iterator
//Iterator<String> it = map.keySet().iterator();
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()) {
String key = it.next();
System.out.print(key + " : ");
System.out.println(map.get(key));
}
//map -> set - > foreach
for (String str : map.keySet()) {
System.out.print(str + " : ");
System.out.println(map.get(str));
}
//Entry : map 데이터를 key value 한쌍씩 뽑아내기
//해당 map에 담겨있는 key value의 연결들(mapping)을 반환
for (Map.Entry<String, String> ele : map.entrySet()) {
System.out.print(ele.getKey() + " = ");
System.out.println(ele.getValue());
}
//배열로 변환
//Set<String> set04 = map.keySet();
//Object[] keyArray = set04.toArray();
Object[] keyArray = map.keySet().toArray();
for (int i = 0; i < keyArray.length; i++) {
//System.out.println(keyArray[i]);
String key = (String) keyArray[i];
System.out.println(key + " = " + map.get(key));
}
//map -> set -> Array -> for
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Map02 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("1", 20);
map.put("2", 100);
map.put("3", 200);
map.put("4", 200);
map.put("5", 30);
System.out.println(map);
Integer num = map.get("5");
System.out.println(num);
System.out.println(map.containsKey("1")); //true
System.out.println(map.containsKey("10")); //flase
System.out.println(map.containsValue(10)); //flase
System.out.println(map.containsValue(100)); //true
//map.clear();
//map.isEmpty();
List<Integer> list = new ArrayList<Integer>(map.values());
List<String> lt = new ArrayList<String>(map.keySet());
for (int i = 0; i < map.size(); i++) {
System.out.print(lt.get(i)+" : ");
System.out.println(list.get(i));
}
Set<Integer> set = new HashSet<Integer>(map.values());
for (Integer integer : set) {
System.out.println(integer);
}
}
}
정리
Map은 Key와 value를 가진 집합이며, 중복을 허용하지 않는다.
즉 한개의 key와 한개의 value가 매칭.
java.util 패키지에 여러 집합들을 사용하기 위한 interface와
class가 정의되어 있다.
HashMap
HashMap은 Map Interface를 implements한 클래스로
중복을 허용하지 않는다.
Map의 특징인 Key-value의 한 쌍으로 구성되어 있다.
Key 또는 value값으로 null을 허용.
HashTable
HashMap과 동일한 내부구조를 가지고 있다.
HashTable도 키로 사용할 수 있는 객체는 hashCode()와 equals()를
재정의해서 동등 객체가 될 조건을 정해야 한다.
hashTable과 차이점은 HashTable은 동기화된 메소드르 구성되었기 때문에
멀티 스레드가 동시에 이 메소드를 실행할 수 없고
하나의 스레드가 실행을 완료해야 다른 스레드가 실행할 수 있다.
그래서 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제 가능
이것을 스레드 안전(thread safe)라고 한다.
로그인 map으로
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Map03 {
public static void main(String[] args) {
//key = id value = passwd
Map<String , String> login = new HashMap<String, String>();
login.put("unknown", "01234567");
login.put("test", "test1234");
login.put("adim", "1234");
login.put("ad", "12345");
login.put("root", "12345");
Scanner sc = new Scanner(System.in);
System.out.println("아이디를 입력하세요.");
String id = sc.next();
System.out.println("비밀번호를 입력하세요.");
String pw = sc.next();
if(login.containsKey(id)) {
if(login.get(id).equals(pw)) {
System.out.println("정상 로그인");
}else {
System.out.println("비밀번호가 일치하지 않습니다.");
}
}else {
System.out.println("존재하지 않는 id입니다.");
}
}
}
map 출력
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Map04 {
public static void main(String[] args) {
ArrayList<Map<String, Object>> list =
new ArrayList<Map<String,Object>>();
Map<String, Object> in = new HashMap<String, Object>();
in.put("제목", "제목");
in.put("내용", "dfkdm.");
in.put("글쓴이", "jojo");
in.put("읽음", 100);
in.put("날짜", "2021-06-15");
list.add(in);
in = new HashMap<String, Object>();
in.put("제목", "제목2");
in.put("내용", "ffzz..");
in.put("글쓴이", "unknown");
in.put("읽음", 500);
in.put("날짜", "2021-06-10");
list.add(in);
in = new HashMap<String, Object>();
in.put("제목", "제목3");
in.put("내용", "vvdqz..");
in.put("글쓴이", "admin");
in.put("읽음", 1);
in.put("날짜", "2021-06-02");
list.add(in);
System.out.println("번호\t제목\t내용\t글쓴이\t조회수\t날짜");
System.out.println("--------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.print(i + "\t");
// System.out.println(list.get(i).values());
System.out.print(list.get(i).get("제목") + "\t");
System.out.print(list.get(i).get("내용") + "\t");
System.out.print(list.get(i).get("글쓴이") + "\t");
System.out.print(list.get(i).get("읽음") + "\t");
System.out.print(list.get(i).get("날짜") + "\n");
}
System.out.println(list);
}
}
반응형
'프로그래밍 > Java 공부' 카테고리의 다른 글
2진트리 BinaryTree, TreeSet (0) | 2021.06.16 |
---|---|
스택-Stack, 큐-Queue (0) | 2021.06.16 |
Collection_[List, Set, Map] (0) | 2021.06.11 |
JAVA_is a, has a, java memory, 랩퍼클래스, 오토 박싱, 언박싱, enum (0) | 2021.06.10 |
abstract 추상화, interface 인터페이스, polymorphism 다형성 (0) | 2021.06.09 |