프로그래밍/Java 공부

Map 출력

개발계발게발 2021. 6. 16. 17:44
반응형

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

 

 

반응형