Serializer<? extends Comparable> keySerializer = (Serializer<? extends Comparable<?>>)bufferMgr.serializerFor(keyType); buffer = bufferMgr.createSortingWithDuplicatesBuffer(keySerializer, extractor.getType().getComparator(), (BufferedRowFactory<BufferedRow>)rowFactory).keepSize(true) .useHeap(useHeap).make(); } else { BTreeKeySerializer<Object> keySerializer = (BTreeKeySerializer<Object>)bufferMgr.bTreeKeySerializerFor(keyType, pack); .getComparator()); buffer = bufferMgr.createSortingBuffer(keySerializer, (BufferedRowFactory<BufferedRow>)rowFactory).keepSize(true) .useHeap(useHeap).make();
Serializer<? extends Comparable> keySerializer = (Serializer<? extends Comparable<?>>)bufferMgr.serializerFor(keyType); buffer = bufferMgr.createSortingWithDuplicatesBuffer(keySerializer, extractor.getType().getComparator(), (BufferedRowFactory<BufferedRow>)rowFactory).keepSize(true) .useHeap(useHeap).make(); } else { BTreeKeySerializer<Object> keySerializer = (BTreeKeySerializer<Object>)bufferMgr.bTreeKeySerializerFor(keyType, pack); .getComparator()); buffer = bufferMgr.createSortingBuffer(keySerializer, (BufferedRowFactory<BufferedRow>)rowFactory).keepSize(true) .useHeap(useHeap).make();
@SuppressWarnings( "unchecked" ) @Test public void shouldCreateSortBufferOnHeap() { TypeFactory<String> stringType = types.getStringFactory(); BTreeKeySerializer<String> strKeySerializer = (BTreeKeySerializer<String>)mgr.bTreeKeySerializerFor(stringType, false); Serializer<String> strSerializer = (Serializer<String>)mgr.serializerFor(stringType); try (SortingBuffer<String, String> buffer = mgr.createSortingBuffer(strKeySerializer, strSerializer).useHeap(true) .keepSize(true).make()) { buffer.put("value1", "first"); buffer.put("value2", "first"); buffer.put("value3", "first"); buffer.put("value1", "second"); buffer.put("value3", "second"); buffer.put("value1", "third"); assertThat(buffer.size(), is(3L)); Iterator<String> iter = buffer.ascending(); assertThat(iter.next(), is("third")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("second")); assertThat(iter.hasNext(), is(false)); iter = buffer.descending(); assertThat(iter.next(), is("second")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); iter = buffer.getAll("value1"); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); } }
@SuppressWarnings( "unchecked" ) @Test public void shouldCreateSortBufferOffHeap() { TypeFactory<String> stringType = types.getStringFactory(); BTreeKeySerializer<String> strKeySerializer = (BTreeKeySerializer<String>)mgr.bTreeKeySerializerFor(stringType, false); Serializer<String> strSerializer = (Serializer<String>)mgr.serializerFor(stringType); try (SortingBuffer<String, String> buffer = mgr.createSortingBuffer(strKeySerializer, strSerializer).useHeap(false) .keepSize(true).make()) { buffer.put("value1", "first"); buffer.put("value2", "first"); buffer.put("value3", "first"); buffer.put("value1", "second"); buffer.put("value3", "second"); buffer.put("value1", "third"); assertThat(buffer.size(), is(3L)); Iterator<String> iter = buffer.ascending(); assertThat(iter.next(), is("third")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("second")); assertThat(iter.hasNext(), is(false)); iter = buffer.descending(); assertThat(iter.next(), is("second")); assertThat(iter.next(), is("first")); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); iter = buffer.getAll("value1"); assertThat(iter.next(), is("third")); assertThat(iter.hasNext(), is(false)); } }