오늘은 map에 대해서 공부해보자.
Map
- 출석부 모양이라고 생각하면 편하다.
1번 나와! -> 박도비
2번 나와! -> 박봉자
key | value |
1번 | 박도비 |
2번 | 박봉자 |
3번 | 박코딩 |
3번 | 박코린 |
3번 나와! 했을때 박코딩/ 박코린이 둘중에 누가 나올지 모른다.
그래서 key는 중복이 안되지만, value는 중복저장 가능하다.
key : set특징
vaule : list 특정을 가지고 있다.
만일, 키가 중복되는 경우 기존에 있는 키에 해당하는 값을 덮어 씌움
key | value |
1번 | 박도비 |
2번 | 박봉자 |
3번 |
3번 김코린이 들어가고 싶을때 키에 해당하는 값을 덮어 씌어 위에 같은 모양으로 변한다.
세줄로 정리해보자면,
Map : key와 value 한쌍이 데이터가 되어 이를 모아둔 객체
key 를 모아두면 Set의 특징 (중복 X)
value 를 모아두면 list의 특징 (중복 O)
객체만들기
Map<Integer,String> map = new HashMap<Integer, String>();
HashMap<k,v> : Map의 자식 클래스 중 가장 대표되는 Map
● Map 객체 추가하는 방법
형식 : Map.put(Integer Key,String Value)
map.put(1,"홍길동");
map.put(2,"이길동");
map.put(3,"박길동");
map.put(4,"최길동");
map.put(5,"강길동");
map.put(6,"하길동");
Key 중복
map.put(1,"홍홍홍"); //중복 x / value 덮어쓰기
ㄴ 1번이 두번 나오지 않고 덮어쓰기가 되어 아래와 같이 출력 된다.
출력 결과 : {1=홍홍홍, 2=이길동, 3=박길동, 4=최길동, 5=강길동, 6=하길동, 7=하길동}
Value 중복
map.put(7, "하길동"); // 중복 O
6번에 하길동이랑 같은 값이 7번에 들어갈 수 있어 아래와 같이 출력된다.
출력결과 ;{ 1=홍홍홍, 2=이길동, 3=박길동, 4=최길동, 5=강길동, 6=하길동, 7=하길동}
● Map 사용예제
1) VO 버전 (Value Object == 값저장용 객체)
ㄴ 특정 데이터 묶음으로 재사용성이 많은 경우 주로 사용하지만! 재사용성이 적은 VO는 코드 낭비이다.
그렇다면 VO버전 작성하는 방법을 확인해보자.
Member mem = new Member();
//값세팅
mem.setId("user01");
mem.setPw("pass01");
mem.setAge(30);
System.out.println(mem.getId()); //user01
System.out.println(mem.getPw()); //pass01
System.out.println(mem.getAge()); //30
System.out.println(mem); //Member [id=user01, pw=pass01, age=30] `
2) Map 버전
Map<String, Object> map = new HashMap<String,Object>();
//값 세팅
map.put("id", "user02");
map.put("pw", "pass02");
map.put("age", 25);
//Map에 저장된 데이터 순차적으로 접근하기
Set<String> set = map.keySet();
System.out.println(set);
//향상된 for문
for( String key : set) {
System.out.println(map.get(key));
! Map 저장된 데이터 순차적으로 접근하기 !
Map에서 Key만 모아두면 Set의 특징을 가진다.
이를 활용할 수 있도록 Map에서 Keyset()메소드 제공 -> key만 Set으로 반환
형식 : Map.put(Integer Key,String Value)
입출력 (IO)
ㄴInput과 Output의 약자, 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 주고 받는 것
데이터를 주고 받는 것을 스트림 이용한다,
input : 입력
ㄴ외부에서 내부로 값이 들어오는 것
키보드, 파일 프로그램 으로 들어오는 것
output : 출력
ㄴ 내부에서 외부로 값이 나가는 것
프로그램 에서 콘솔 /파일에 나가는 것
stream : 개울 시내 연속 흘러가는 것 흐름
ㄴ 외부 내부 왔다가다 하려면 통로가 필요하다 통로를 스트림으로 한다.
네트워크 (Network)
ㄴ 여러 대의 컴퓨터를 통신 회선으로 연결하는 것으로 데이터를 손쉽게 주고 받는거나 자원 등 공유 하기 위해 사용
서버와 클라이언트
ㄴ네트워크로 연결된 컴퓨터간의 관계를 역할(role)로 구분한 개념
서버 : 서비스를 제공하는 프로그램 또는 컴퓨터
클라이언트 : 서비스를 요청하여 사용하는 프로그램 또는 컴퓨터 -→ ip / 포트를 알고 있어야한다.
● ip주소 : 네트워크 상에서 컴퓨터를 식별하는 번호
● 포트 : 같은 컴퓨터 내에서 프로그램을 식별하는 번호
(포트 1개당 1개의 프로그래만 연결 가능하다)
학원을 찾아가려면 주소와 몇층인지 알아야 맞는 곳을 찾아 갓 수 있는데,
학원 가는 주소는 ip주소이고 몇층일까 ? 포트라고 생각하면 쉽니다.
소켓프로그래밍
ㄴ소켓 : 프로세스 간의 통신에 사용되는 양쪽 끝단
데이터를 주고 받을 수 있게 해주는 프로그래밍
프로토콜 : 컴퓨터 간의 정보를 주고 받을 때의 통신 방법에 대한 규약
● TCP : 데이터를 전달할 때계속 확인하고 확인해서 신뢰성 최대한 보장하기 위한 연결 지향형 통신이다.
● UCP : 빠른 전달을 보장하기위한 방식으로 비연결 지향형 통신이다.
TCP 소켓 프로그래밍
'ON > JAVA' 카테고리의 다른 글
[JAVA] 메소드 공부 (0) | 2023.05.30 |
---|---|
17일 컬렉션 _ Set계열 (1) | 2023.05.11 |
16일_ 컬랙션 List계열 및 향상된 for문 (0) | 2023.05.10 |
15일차 _ 인터페이스 및 예외처리 (4) | 2023.05.09 |
14일차_객체지향 복습 및 다형성/바인딩 (0) | 2023.05.04 |