-
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'KIC > JAVA' 카테고리의 다른 글
day28 - JAVA (자바, Collection 예제, 람다식) (0) 2021.07.22 day27 - JAVA (자바, Collection, Iterator, Map) (0) 2021.07.21 day25_2 - JAVA (자바, Collection) (0) 2021.07.19 day25_2 - JAVA (자바, Collection) (0) 2021.07.19 day25_1 - JAVA (자바, Generic) (0) 2021.07.19