ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day26 - JAVA (자바, Collection Framework)
    KIC/JAVA 2021. 7. 20. 18:08
    반응형

    [Collection Framework]

    -> 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리

     

    -> java.util 패키지에 포함

     

    -> 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스 이용

     

     

     

     

    [반복자]

    -> Iteraor는 반복적으로 요소를 읽어내는 반복자이다.

     

     

     

     

     

     

     

     

     

    [Map 컬렉션]

    -> 키와 값으로 구성된 Map.Entry 객체를 저장하는 구조

     

    -> 키와 값은 모두 객체이다.

     

    -> 키는 중복될 수 없지만 값은 중복 저장 가능하다.

     

    [구현 클래스]

    -> HashMap, Hashtable, LinkedHashMap, Properties, TreeMap

     

     

     

     

    [Map 컬렉션 sort 예시]

    package javaPro.java_collection;
    
    public class Person implements Comparable<Person> {
        String name;
        int age;
    
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Person = [" + " name='" + name + "'" + ", age='" + age + "'" + "]";
        }
    
        // name.equals(p.name) && age == p.age; , equals
        // name.hashCode() + age; hashcode
    
        @Override
        public boolean equals(Object obj) {
            Person p = (Person) obj;
            return name.equals(p.name) && age == p.age;
    
        }
    
        @Override
        public int hashCode() {
            return name.hashCode() + age;
        }
    
        @Override
        public int compareTo(Person o) {
            // TODO Auto-generated method stub
            // return age - o.age; // 나이순 오름차순
            // return age - o.age*(-1); // 나이순 내림차순
            // return (name.compareTo(o.name)); // 이름순 오름차순
            return (name.compareTo(o.name)) * (-1); // 이름순 내림차순;
        }
    
    }

     

     

    package javaPro.java_collection;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.List;
    
    public interface ListEx4 {
        public static void main(String[] args) {
            List<Person> li = new ArrayList<Person>();
            li.add(new Person("홍길동", 14));
            li.add(new Person("홍길동", 10));
            li.add(new Person("홍길동", 30));
            li.add(new Person("이정민", 10));
            li.add(new Person("김윤민", 16));
    
            Person p1 = new Person("김삿갓", 20);
            li.add(p1);
            print(li);
            System.out.println("=====================");
            
            Collections.sort(li); 
            // error sort를 할 수 있는 기본적 요소가 있어야 한다. -> Comparable 이 있어야 한다.
            
            print(li);
    
            // List<Integer> li2 = new ArrayList<Integer>();
            // li2.add(11);
            // li2.add(12);
            // li2.add(3);
            // Collections.sort(li2);
            // System.out.println(li2);
    
        }
    
        public static void print(List li) {
            for (Object ob : li) {
                System.out.println(ob);
            }
        }
    }

     

     

     

     

    [Vector 예제]

    package javaPro.java_collection;
    
    import java.util.Vector;
    
    public class VectorEx1 {
        public static void main(String[] args) {
            Vector<String> v = new Vector<String>(5);
            // 용량이 5인 Vector 생성
    
            v.add("1");
            v.add("2");
            v.add("3");
    
            print(v);
    
            v.trimToSize(); // 빈 공간을 없앤다. 용량과 크기가 같아진다.)
    
            System.out.println("=== After trimToSize() === ");
            print(v);
    
            v.ensureCapacity(6);
            // v의 capacity를 최소한 6이 되도록 한다.
            // 만일 v의 capacity가 6이상이라면 아무 일도 일어나지 않는다. 현재는 v의
            // capacity가 3이므로 크기가 6인 배열을 생성해서 v의 내용을 복사했다.
    
            System.out.println(" === After ensureCapacity (6) === ");
            print(v);
    
            v.setSize(7); // 용량 7로 -> 빈공간 null이 붙는다.
    
            System.out.println("=== After setSize(7) === ");
            print(v);
    
            v.clear();
    
            System.out.println("==== After clear() === ");
    
            print(v);
        }
    
        public static void print(Vector v) {
            System.out.println(v);
            System.out.println("size : " + v.size());
            System.out.println("capasity : " + v.capacity());
        }
    }

     

     

     

     

     

     

     

    [Set 예제]

    package javaPro.java_collection;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class SetEx1 {
        public static void main(String[] args) {
            Object[] arr = { "홍길동", 1, "1", "김삿갓", "이몽룡", 
            "홍길동", "성춘향", "향단이", "홍길동", "김삿갓" };
    
            Set<Object> set1 = new HashSet<Object>();
            Set<Object> set2 = new HashSet<Object>();
            Set<Object> set3 = new HashSet<Object>();
    
            // Set에는 중복값이 들어가면 false이므로 
            //홍길동은 중복된 값을 만났을 때 다른 arr에 저장되게 된다.
            for (int i = 0; i < arr.length; i++) {
                if (!set1.add(arr[i])) {
                    if (!set2.add(arr[i])) {
                        set3.add(arr[i]);
                    }
                }
                System.out.println(set1);
                System.out.println(set2);
                System.out.println(set3);
            }
        }
    }

     

     

     

    [Map 예제]

    package javaPro.java_collection;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class MapEx1 {
        public static void main(String[] args) {
            HashMap<String, Integer> map = new HashMap<String, Integer>();
            String[] names = { "홍길동", "김삿갓", "이몽룡", "임꺽정", "김삿갓" };
            int[] nums = { 1234, 4567, 2350, 9870, 3456 };
    
            for (int i = 0; i < names.length; i++) {
                map.put(names[i], nums[i]);
            }
            System.out.println(map);
            // Value =map.get(Key) => key에 해당하는 Value 값을 리턴
            System.out.println("홍길동의 번호 : " + map.get("홍길동"));
            System.out.println("이몽룡의 번호 :" + map.get("이몽룡"));
            System.out.println("김삿갓의 번호 :" + map.get("김삿갓"));
            // Key 값들만 조회
    
            System.out.println("Key들만 조회하기");
    
            Set<String> keys = map.keySet();
            for (String k : keys) {
                System.out.println(k + "의 번호" + map.get(k));
            }
            // Value값들만 조회하기
            System.out.println("Value 값들만 조회");
            Collection<Integer> values = map.values(); // => Key값 조회 불가
    
            for (Integer v : values) {
                System.out.println(v);
                // Key, Value 201
            }
            System.out.println("Key, Value의 쌍인 객체로 조회");
            Set<Map.Entry<String, Integer>> entry = map.entrySet();
            for (Map.Entry<String, Integer> m : entry) {
                System.out.println(m.getKey() + "의 번호 :" + m.getValue());
                System.out.println(m);
            }
        }
    }

     

    300x250

    댓글

Designed by Tistory.