본문 바로가기

프로그램언어/자바

Collection 계열 클래스3

Map 계열

데이터를 Key와 Value값으로 한쌍으로 저장한다.

key는 중복되면 안 된다.

key를 이용하여 value를 얻는다.

 

함수 설명
put() key와 value 값을 Map에 추가
get() key로 등록된 값을 반환
remove() key에 해당하는 Map의 요소를 삭제
clear() Map의 모든 요소들를 삭제
keySet() Map의 키 목록들을 Set 형태로 리턴
values() Map의 값들을 Collection에 담아서 리턴
size() Map에 포함된 Entry 수를 반환
isEmpty() Map에 데이터가 없는지 확인( 없을 경우 true를 반환 아니면 false를 반환)
containskey() Map에 Key로 등록된 Entry가 있는 확인
containsValue() Map에 Value로 등록된 Entry가 있는 확인

 

 

요소 추가하기

import java.util.HashMap;

import java.util.Map;

 

public class ex01 {

 

    public static void main(String[] args) {

        Map<String, String> hashMap = new HashMap<>();

 

        hashMap.put("A", "100");

        hashMap.put("B", "200");

        hashMap.put("C", "300");

        hashMap.put("D", "400");

 

        // 이미 키가 등록되어 있는 경우 덮어쓴다.

        hashMap.put("C", "300");

 

        System.out.println(hashMap);

    }

}

실행 결과]
{A=100, B=200, C=300, D=400}

 

map의 value값을 출력하기

    System.out.println(hashMap.get("A"));

    System.out.println(hashMap.get("D"));

100
400

 

요소 추가하기

    // putIfAbsent() : 키가 존재하지 않으면 추가

    // "A"가 존재하므로 실패

    hashMap.putIfAbsent("A", "150");

    System.out.println(hashMap);

 

    // "E"는 키값이 없어 추가 성공

    hashMap.putIfAbsent("E", "150");

     System.out.println(hashMap);

실행결과]

{A=100, B=200, C=300, D=400}

{A=100, B=200, C=300, D=400, E=150}

 

요소 치환하기

    // replace() : 요소의 값을 치환

    // "E"의 변경되기전의 값이 ret에 저장

    String ret = hashMap.replace("E", "500");

    System.out.println("ret : " + ret);

    // "E"키값을 통해 변경된 값확인

    System.out.println(hashMap.get("E"));

실행결과]
ret : 150
500

 

요소의 개수와 삭제

import java.util.HashMap;

import java.util.Map;

 

public class ex01 {

 

    public static void main(String[] args) {

        Map<String, String> hashMap = new HashMap<>();

 

        hashMap.put("A", "100");

        hashMap.put("B", "200");

        hashMap.put("C", "300");

        hashMap.put("D", "400");

        hashMap.put("E", "500");

 

        // map의 요소의 갯수구하기

       System.out.println("총 갯수 : " + hashMap.size());

 

       // 요소 삭제

       String ret = hashMap.remove("E");

       System.out.println("ret : " + ret);

       // map의 요소의 갯수구하기

       System.out.println("총 갯수 : " + hashMap.size());


       // map의 모든 요소 삭제

       hashMap.clear();

       // map의 요소의 갯수구하기

       System.out.println("총 갯수 : " + hashMap.size());

 
       // map이 비어 있는지 확인

       System.out.println(hashMap.isEmpty());

    }

}

실행 결과]
총 갯수 : 5
ret : 500
총 갯수 : 4
총 갯수 : 0
true 

 

map의 key값과 value값 출력하기

import java.util.Collection;

import java.util.HashMap;

import java.util.Map;

 

public class ex01 {

 

    public static void main(String[] args) {

        Map<String, String> hashMap = new HashMap<>();

 

        hashMap.put("A", "100");

        hashMap.put("B", "200");

        hashMap.put("C", "300");

        hashMap.put("D", "400");

        hashMap.put("E", "500");

 

        // key값을 이용하여 value값 출력

        Collection<String> coll = hashMap.keySet();

        // key값들 출력

        System.out.println("key : " + coll);

        for(String key : coll)

            System.out.println(hashMap.get(key));

 

        // value값 추출

        Collection<String> coll2 = hashMap.values();

        // key값들 출력

        System.out.println("value : " + coll2);

        for(String value : coll2)

            System.out.println(value);

    }

}

 

실행 결과]
key : [A, B, C, D, E]
100
200
300
400
500
value : [100, 200, 300, 400, 500]
100
200
300
400
500

 

요소안에서 key나 value에 지정한 값이 포함되었는지 확인

import java.util.HashMap;

import java.util.Map;

 

public class ex01 {

 

    public static void main(String[] args) {

        Map<String, String> hashMap = new HashMap<>();

 

        hashMap.put("A", "100");

        hashMap.put("B", "200");

        hashMap.put("C", "300");

        hashMap.put("D", "400");

        hashMap.put("E", "500");

 

        // key중에 지정한 키가 포함되었는지 확인

        System.out.println(hashMap.containsKey("B"));

        System.out.println(hashMap.containsKey("F"));

 

        // value중에 지정한 값이 포함되었는지 확인

        System.out.println(hashMap.containsValue("300"));

        System.out.println(hashMap.containsValue("700"));

    }

}

실행 결과]
true
false
true
false

 

 

예제1]

import java.util.HashMap;

import java.util.Map;

 

class Student {

    private String name;

    private int age;

    public String getName() {

        return name;

    }

    //생성자

    public Student(){

        this("홍길동", 18);

    }

 

    public Student(String name, int age){

        this.name=name;

        this.age=age;

    }

 

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

   }

   public void setAge(int age) {

        this.age = age;

   }

 

   public String toString(){

      return "이름은 " + name + " ,나이는" + age+ " 입니다.";

    }

}

 

public class Main{

    public static void main(String[] args){

 

        Map map = new HashMap();

 

        map.put(1, new Integer(100));

        map.put("second","Hello World!!");

        map.put("third",new Student());

        map.put("fourth",null ); //HaspMapnull을 허용한다.

 

        //Integer i =map.get(1); //에러 발생

        Integer i = (Integer)map.get(1);

        //String str=map.get("second"); //에러발생

        String str=(String)map.get("second");

 

        System.out.println(i);

        System.out.println(str);

 

        Student st=(Student)map.get("third");

        System.out.println(st); //overriding toString()메소드를 호출한다.

        System.out.println( map.get("third")); //자동으로 형변환을 해준다.

        System.out.println(map.get("fourth"));

    }

}

실행결과]

100

Hello World!!

이름은 이순신 ,나이는23 입니다.

이름은 이순신 ,나이는23 입니다.

null

'프로그램언어 > 자바' 카테고리의 다른 글

스레드1  (1) 2020.11.15
Collection 계열 클래스4  (0) 2020.11.14
Collection 계열 클래스2  (0) 2020.11.14
Collection 계열 클래스1  (0) 2020.11.14
컬렉션 프레임워크 문제  (0) 2020.11.08