JAVA chapter15. 컬렉션 프레임워크. 15.5 검색 기능을 강화시킨 컬렉션 // 추가 1:06
JAVA/CONCEPT 2018. 1. 15. 16:16 |JAVA chapter15. 컬렉션 프레임워크
15.5 검색 기능을 강화시킨 컬렉션
15.5.1 이진 트리 구조
15.5.2 TreeSet
리턴 타입 | 메소드 | 설명 |
E | first() | 제일 낮은 객체를 리턴 |
E | last() | 제일 높은 객체를 리턴 |
E | lower(E e) | 주어진 객체보다 바로 아래 객체를 리턴 |
E | higher(E e) | 주어진 객체보다 바로 위 객체를 리턴 |
E | floor(E e) | 주어진 객체와 동등한 객체가 있으면 리턴, 만약 없다면 주어진 객체의 바로 아래의 객체를 리턴 |
E | ceiling(E e) | 주어진 객체와 동등한 객체가 있으면 리턴, 만약 없다면 주어진 객체의 바로 위의 객체를 리턴 |
E | pollFirst() | 제일 낮은 객체를 꺼내오고 컬렉션에서 제거함 |
E | pollLast() | 제일 높은 객체를 꺼내오고 컬렉션에서 제거함 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | package sec05.exam01_treeset; import java.util.Iterator; import java.util.TreeSet; public class TreeSetExample1 { public static void main(String[] args) { TreeSet<Integer> scores = new TreeSet<Integer>(); scores.add(new Integer(87)); scores.add(new Integer(98)); scores.add(new Integer(75)); scores.add(new Integer(95)); scores.add(new Integer(80)); Integer score = null; score = scores.first(); System.out.println("가장 낮은 점수: " + score); score = scores.last(); System.out.println("가장 높은 점수: " + score + "\n"); score = scores.lower(new Integer(95)); System.out.println("95점 아래 점수: " + score); score = scores.higher(new Integer(95)); System.out.println("95점 위의 점수: " + score + "\n"); score = scores.floor(new Integer(95)); System.out.println("95점 이거나 바로 아래 점수: " + score); score = scores.ceiling(new Integer(85)); System.out.println("85점 이거나 바로 위의 점수: " + score + "\n"); // 1 Iterator<Integer> iterator = scores.iterator(); while(iterator.hasNext()) { int s = iterator.next(); // iterator.remove(); // remove를 따로해줘야함 System.out.println(s); } // 2. 밑에꺼는 꺼내고 없앤다 /* while(!scores.isEmpty()) { score = scores.pollFirst(); // 제일 낮은 객체를 꺼내오고 컬렉션에서 제거함 System.out.println(score + "(남은 객체 수: " + scores.size() + ")"); } */ System.out.println("="); while(!scores.isEmpty()) { score = scores.pollLast(); // 제일 높은 객체를 꺼내오고 컬렉션에서 제거함 System.out.println(score + "(남은 객체 수: " + scores.size() + ")"); } } } | cs |
리턴 타입 | 메소드 | 설명 |
Iterator<E> | descendingIterator() | 내림차순으로 정렬된 Iterator를 리턴 |
NavigableSet<E> | descendingSet() | 내림차순으로 정렬된 NavigableSet을 반환 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package sec05.exam01_treeset; import java.util.NavigableSet; import java.util.TreeSet; public class TreeSetExample2 { public static void main(String[] args) { TreeSet<Integer> scores = new TreeSet<Integer>(); scores.add(new Integer(87)); scores.add(new Integer(98)); scores.add(new Integer(75)); scores.add(new Integer(95)); scores.add(new Integer(80)); // 내림차순 NavigableSet<Integer> descendingSet = scores.descendingSet(); for(Integer score : descendingSet) { System.out.print(score + " "); } System.out.println(); // 오름차순 NavigableSet<Integer> ascendingSet = descendingSet.descendingSet(); for(Integer score : ascendingSet) { System.out.print(score + " "); } } } | cs |
리턴 타입 | 메소드 | 설명 |
NavigableSet<E> | headSet( E toElement, boolean inclusive ) | 주어진 객체보다 낮은 객체들을 NaviableSet으로 리턴, 주어진 객체 포함 여부는 두 번째 매개값에 따라 달라짐 |
NavigableSet<E> | tailSet( E fromElement, boolean inclusive ) | 주어진 객체보다 낮은 객체들을 NaviableSet으로 리턴, 주어진 객체 포함 여부는 두 번째 매개값에 따라 달라짐 |
NavigableSet<E> | subSet( E fromElement, boolean frominclusive, E toElement, boolean toinclusive ) | 시작과 끝으로 주어진 객체 사이의 객체들을 NaviableSet으로 리턴. 시작과 끝 객체의 포함 여부는 두 번째 매개, 네 번째 매개값에 따라 달라짐 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package sec05.exam01_treeset; import java.util.NavigableSet; import java.util.TreeSet; public class TreeSetExample3 { public static void main(String[] args) { TreeSet<String> treeSet = new TreeSet<String>(); treeSet.add("apple"); treeSet.add("forever"); treeSet.add("description"); treeSet.add("ever"); treeSet.add("zoo"); treeSet.add("base"); treeSet.add("guess"); treeSet.add("cherry"); System.out.println("[c~f 사이의 단어 검색]"); NavigableSet<String> rangeSet = treeSet.subSet("c", true, "f", true); // c와 f의 사이 단어 (c, f 포함) for(String word : rangeSet) { System.out.println(word); } } } | cs |
15.5.3 TreeMap
리턴 타입 | 메소드 | 설명 |
Map.Entry<K,V> | firstEntry() | 제일 낮은 Map.Entry를 리턴 |
Map.Entry<K,V> | lastEntry() | 제일 낮은 Map.Entry를 리턴 |
Map.Entry<K,V> | lowerEntry(K key) | 주어진 키보다 바로 아래의 Map.Entry를 리턴 |
Map.Entry<K,V> | higherEntry(K key) | 주어진 키보다 바로 위의 Map.Entry를 리턴 |
Map.Entry<K,V> | floorEntry(K key) | 주어진 키와 동등한 키가 있으면 해당 Map.Entry를 리턴, 없다면 주어진 키 바로 위의 Map.Entry를 리턴 |
Map.Entry<K,V> | ceilingEntry(K key) | 주어진 키와 동등한 키가 있으면 해당 Map.Entry를 리턴, 없다면 주어진 키 바로 위의 Map.Entry를 리턴 |
Map.Entry<K,V> | pollFirstEntry() | 제일 낮은 Map.Entry를 꺼내고오고 컬렉션에서 제거함 |
Map.Entry<K,V> | pollLastEntry() | 제일 높은 Map.Entry를 꺼내고오고 컬렉션에서 제거함 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package sec05.exam02_treemap; import java.util.Map; import java.util.TreeMap; public class TreeMapExample1 { public static void main(String[] args) { TreeMap<Integer,String> scores = new TreeMap<Integer,String>(); scores.put(new Integer(87), "홍길동"); scores.put(new Integer(98), "이동수"); scores.put(new Integer(75), "박길순"); scores.put(new Integer(95), "신용권"); scores.put(new Integer(80), "김자바"); Map.Entry<Integer, String> entry = null; entry = scores.firstEntry(); System.out.println("가장 낮은 점수: " + entry.getKey() + "-" + entry.getValue()); entry = scores.lastEntry(); System.out.println("가장 높은 점수: " + entry.getKey() + "-" + entry.getValue() + "\n"); entry = scores.lowerEntry(new Integer(95)); System.out.println("95점 아래 점수: " + entry.getKey() + "-" + entry.getValue()); entry = scores.higherEntry(new Integer(95)); System.out.println("95점 위의 점수: " + entry.getKey() + "-" + entry.getValue() + "\n"); entry = scores.floorEntry(new Integer(95)); System.out.println("95점 이거나 바로 아래 점수: " + entry.getKey() + "-" + entry.getValue()); entry = scores.ceilingEntry(new Integer(85)); System.out.println("85점 이거나 바로 위의 점수: " + entry.getKey() + "-" + entry.getValue() + "\n"); while(!scores.isEmpty()) { entry = scores.pollFirstEntry(); System.out.println(entry.getKey() + "-" + entry.getValue() + "(남은 객체 수: " + scores.size() + ")"); } } } | cs |
리턴 타입 | 메소드 | 설명 |
NavigableSet<K> | descendingKeySet() | 내림차순으로 정렬된 키의 NavigableSet를 리턴 |
NavigableMap<K, V> | descendingMap() | 내림차순으로 정렬된 Map.Entry의 NavigableMap을 리턴 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package sec05.exam02_treemap; import java.util.Map; import java.util.NavigableMap; import java.util.Set; import java.util.TreeMap; public class TreeMapExample2 { public static void main(String[] args) { TreeMap<Integer,String> scores = new TreeMap<Integer,String>(); scores.put(new Integer(87), "홍길동"); scores.put(new Integer(98), "이동수"); scores.put(new Integer(75), "박길순"); scores.put(new Integer(95), "신용권"); scores.put(new Integer(80), "김자바"); NavigableMap<Integer,String> descendingMap = scores.descendingMap(); Set<Map.Entry<Integer,String>> descendingEntrySet = descendingMap.entrySet(); for(Map.Entry<Integer,String> entry : descendingEntrySet) { System.out.print(entry.getKey() + "-" + entry.getValue() + " "); } System.out.println(); NavigableMap<Integer,String> ascendingMap = descendingMap.descendingMap(); Set<Map.Entry<Integer,String>> ascendingEntrySet = ascendingMap.entrySet(); for(Map.Entry<Integer, String> entry : ascendingEntrySet) { System.out.print(entry.getKey() + "-" + entry.getValue() + " "); } } } | cs |
15.5.4 Comparable과 Comparator
'JAVA > CONCEPT' 카테고리의 다른 글
JAVA chapter15. 컬렉션 프레임워크. 15.7 동기화된 컬렉션 (0) | 2018.01.15 |
---|---|
JAVA chapter15. 컬렉션 프레임워크. 15.6 LIFO와 FIFO 컬렉션 (0) | 2018.01.15 |
JAVA chapter15. 컬렉션 프레임워크. 15.4 Map 컬렉션 (0) | 2018.01.15 |
JAVA chapter15. 컬렉션 프레임워크. 15.3 Set 컬렉션 (0) | 2018.01.15 |
JAVA chapter15. 컬렉션 프레임워크. 15.2 List 컬렉션 (0) | 2018.01.15 |