일반 array로부터 Set 초기화 하기
- Arrays.asList() 메소드를 사용한다.
String[] array = {"apple", "orange"}; HashSet<String> set = new HashSet<String>(Arrays.asList(array));
Set으로부터 일반 array 뽑아내기
- Set의 toArray() 메소드를 사용한다.
HashSet<String> set; set.toArray(new String[set.size()]);
EnumSet 순회하기
public static enum MyFruitType { ORANGE(0), APPLE(1); private final int mValue; private MyFruitType(int value) { this.mValue = value; } public int getValue() { return mValue; } } for (MyFruitType type : MyFruitType.values()) { System.out.println(type.getValue()); }
EnumSet의 enum에 대한 string 얻어오기
- Enum 값의 toString()을 이용한다.
System.out.println(MyFruitType.ORANGE.toString() + "=" + MyFruitType.ORANGE.getValue());
- 사실 그냥 toString() 없이 enum값 자체를 써도 똑같음
System.out.println(MyFruitType.ORANGE + "=" + MyFruitType.ORANGE.getValue());
TreeSet
- TreeSet은 SortedSet interface에 대한 구현체이다. SortedSet 구현체로는 ConcurrentSkipListSet, NavigableSet, TreeSet이 있다.
- SortedSet의 메소드로는 first(), last(), subSet(E start, E end), tailSet(E start)가 있다. 정렬이 되어 있으니까 순서상 제일 앞의 것, 뒤의 것, 중간 토막, 뒤 토막을 얻어내는 메소드를 제공하는 것이다.
- TreeSet은 SortedSet의 메소드를 구현하고 있고 Element는 Comparable<E>을 구현하고 있어야 한다.
- 많이 사용하는 메소드로서 아래와 같은 것이 있다.
- boolean add(E object)
- E ceiling(E e) // 주어진 e보다 크거나 같은 것들 중 가장 앞의 것 (작은 것), 없으면 null
- boolean contains(Object object)
- Iterator<E> iterator(), Iterator<E> descendingIterator()
- E floor(E e) // 주어진 e보다 작거나 같은 것들 중에서 가장 뒤의 것 (큰 것), 없으면 null
- E higher(E e) // 주어진 e보다 큰 것들 중에서 가장 앞의 것 (작은 것), 없으면 null
- E lower(E e) // 주어진 e보다 작은 것들 중에서 가장 뒤의 것 (큰 것), 없으면 null
- E pollFirst(), E pollLast() // first(), last()와 달리 원소를 제거하면서 가져옴
BitSet
- bit 단위로 data를 저장하고 조작할 수 있도록 제공되는 class
- 기본적으로 특정 bit를 조작하는 아래와 같은 메소드들이 있다.
- void set(int index) // 특정 bit를 1로 함
- void set(int index, boolean v) // 특정 bit를 주어진 0 / 1로 함
- void clear() // 전체를 0으로 함
- void clear(int index) // 특정 bit를 0으로 함
- void flip(int index) // 특정 bit를 reverse 함
- boolean get() // 특정 bit의 값을 읽음
- void and(BitSet bitSet) // 주어진 BitSet과 and 연산
- void or(BitSet bitSet) // 주어진 BitSet과 or 연산
- void xor(BitSet bitSet) // 주어진 BitSet과 xor 연산
- 샘플 코드
BitSet bs1 = new BitSet(16); BitSet bs2 = new BitSet(16); // set some bits for (int i = 0; i < 16; i++) { if ((i % 2) == 0) bs1.set(i); // 0101010101010101 if ((i % 5) != 0) bs2.set(i); // 0111101111011110 } System.out.println("BitSet 1: " + bs1); System.out.println("BitSet 2: " + bs2); bs2.and(bs1); System.out.println("BitSet 1 AND BitSet 2: " + bs2); bs2.or(bs1); System.out.println("BitSet 1 OR BitSet 2: " + bs2); bs2.xor(bs1); System.out.println("BitSet 1 XOR BitSet 2: " + bs2);
- 결과
BitSet 1: {0, 2, 4, 6, 8, 10, 12, 14} BitSet 2: {1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14} BitSet 1 AND BitSet 2: {2, 4, 6, 8, 12, 14} BitSet 1 OR BitSet 2: {0, 2, 4, 6, 8, 10, 12, 14} BitSet 1 XOR BitSet 2: {}
댓글 없음:
댓글 쓰기