TIL. 컬렉션(Set, Map)

hyuko·2023년 1월 16일
0

Java

목록 보기
24/26

컬렉션

Set

  • set 이란?

    집합의 개념이다. 순서가 없고 중복도 불가하다.

  • 선언방법

Set<T> set = new HashSet<>();

제네릭타입을 이용해서 안에 set에 들어갈 자료형을 넣어준다.

set 예시코드

public class SetStringMain {

    public static void main(String[] args) {
        Set<String> setStr = new HashSet<String>();
        List<String> listStr = new ArrayList<String>();

        listStr.add("신사임당");
        listStr.add("세종대왕");
        listStr.add("신사임당");
        listStr.add("신사임당");

        System.out.println(listStr);

        setStr.add("홍길동");
        setStr.add("김유신");
        setStr.add("한석봉");
        setStr.add("이순신"); // add 를 같은값을 여러번 한다해도 한번만 들어간다 set 의 특징
//        setStr.add("이순신");
        setStr.addAll(listStr);

        System.out.println(setStr);
        String searchName = "홍길동";
        for (String name : setStr) {
            if ((name.equals(searchName))){
                System.out.println(name);
            }
//            System.out.println(name);
        }

        Iterator<String> iterator = setStr.iterator();
        while (iterator.hasNext()) {
            String n = iterator.next();
            if (n.equals(searchName)){
                System.out.println(n);
            }
        }
    }
}
  • 콘솔 실행화면

  • set 에 객체를 넣어 진행

public class StudentHashSet {

    private static Student searchStudent(Set<Student> students, String searchName) {
        Student student = null;

        for (Student value : students) {
            if (value.getName().equals(searchName)){
                student = value;
                break;
            }
        }
        return student;
    }

    public static void main(String[] args) {
        Set<Student> students = new HashSet<Student>();

        students.add(new Student("John", 20));
        students.add(new Student("Marry", 23));
        students.add(new Student("James", 22));
        students.add(new Student("Bob", 24));

        System.out.println(students);

        Student student = searchStudent(students, "John");

        if (student == null) {
            System.out.println("검색실패!");
        }else {
            System.out.println("검색성공! " + student);
        }
    }
}
  • 실행 후 콘솔화면


Map

  • map 이란:

    key 와 value 로 이루어져 있다.
    간단히 말하자면 key 는 set의 특징이, value는 list의 특징이 있다.
    key는 중복이 불가하고, value는 중복이 허용이된다.

  • map의 선언방식

Map<key, value> map = new HashMap<>();

map 의 예제코드

public class MapStringMain {

    public static void main(String[] args) {
        Map<String, String> strMap = new HashMap<String, String>();


        strMap.put("김유신", "a");
        strMap.put("홍길동", "b");
        strMap.put("이순신", "c");
        strMap.put("한석봉", "d");



        System.out.println(strMap);

        // map 은 get 을 쓸 때 안에 키값을 넣어 value 값을 뽑아낼수 있다.
        System.out.println(strMap.get("a"));
        // key 값에 value 값이 없으므로 return 을 null 로 해준다.
        System.out.println(strMap.get("e"));

        for (String key : strMap.keySet()) {
//            System.out.println(strMap.get(key));
            System.out.println("key: " + key);
//            System.out.println();
        }

        for (String value : strMap.values()) {
            System.out.println("value: " + value);
        }

        System.out.println(strMap.entrySet());

//        Set<Map.Entry<String, String>> s = null;

        for (Map.Entry<String, String> strEntry: strMap.entrySet()) {
            System.out.println(strEntry);
            // entry 를 쓰게 되면 한쌍으로 값을 빼서 get 을 이용해서 key 와 value 값을 각각 뽑아낼수 있다.
            System.out.println("key: " + strEntry.getKey());
            System.out.println("value: " + strEntry.getValue());
        }

        System.out.println("================================================================");
        strMap.forEach((k,v) -> {
            System.out.println("key: " + k);
            System.out.println("value: " + v);
        });

    }
}
  • 실행 후 콘솔화면


위의 코드에서 알 수 있듯이 map 또한 제네릭으로 타입을 지정해서 변수들을 넣을 수 있다.
map 같은경우 값을 넣을 때 set과 list와 달리 put을 이용한다.

  • map에 객체를 넣어 예제 실행
public class HashMapTest {

    public static void main(String[] args) {
        Map<String, Object> dataMap = new HashMap<String, Object>();

        dataMap.put("username", "aaa");
        dataMap.put("password", "1234");
        dataMap.put("name", "홍길동");
        dataMap.put("email", "aaa@gmail.com");

        List<String> hobby = new ArrayList<>();
        hobby.add("골프");
        hobby.add("야구");
        hobby.add("축구");
        hobby.add("게임하기");

        dataMap.put("hobbies", hobby);


        // 작은 객체라고 생각을 한다 변수명을 key 라 생각을하고 value 를 값이라고 생각을한다. get 해서 가지고오는건 getter 를 사용해 들고 온다고 생각을한다.
        System.out.println(dataMap);
        List<String> hobbyList = (List<String>) dataMap.get("hobbies");
        System.out.println(hobbyList.get(0));
    }
}
  • 코드 실행 후 콘솔 화면

위의 코드에서 알 수 있듯이 Object 객체가 들어올수 있음을 볼 수가 있다.
그렇다는건 map의 키값 밸류값들이 list, set, map 등 다양하게 들어올수 있다.

profile
백엔드 개발자 준비중

0개의 댓글