@Override public void sortDescending() { short[] elements = values.toShortArray(); ShortArrays.parallelQuickSort(elements, reverseDictionarySortComparator); this.values = new ShortArrayList(elements); }
@Override public void sortAscending() { short[] elements = values.toShortArray(); ShortArrays.parallelQuickSort(elements, dictionarySortComparator); this.values = new ShortArrayList(elements); }
@Override public ShortColumn top(int n) { final ShortArrayList top = new ShortArrayList(); final short[] values = data.toShortArray(); ShortArrays.parallelQuickSort(values, descendingComparator); for (int i = 0; i < n && i < values.length; i++) { top.add(values[i]); } return new ShortColumn(name() + "[Top " + n + "]", top); }
@Override public ShortColumn bottom(final int n) { final ShortArrayList bottom = new ShortArrayList(); final short[] values = data.toShortArray(); ShortArrays.parallelQuickSort(values); for (int i = 0; i < n && i < values.length; i++) { bottom.add(values[i]); } return new ShortColumn(name() + "[Bottoms " + n + "]", bottom); }
@Override public ShortColumn lag(int n) { final int srcPos = n >= 0 ? 0 : 0 - n; final short[] dest = new short[size()]; final int destPos = n <= 0 ? 0 : n; final int length = n >= 0 ? size() - n : size() + n; for (int i = 0; i < size(); i++) { dest[i] = ShortColumnType.missingValueIndicator(); } short[] array = data.toShortArray(); System.arraycopy(array, srcPos, dest, destPos, length); return new ShortColumn(name() + " lag(" + n + ")", new ShortArrayList(dest)); }
@Override public void sortAscending() { short[] elements = values.toShortArray(); ShortArrays.parallelQuickSort(elements, dictionarySortComparator); this.values = new ShortArrayList(elements); }
@Override public void sortDescending() { short[] elements = values.toShortArray(); ShortArrays.parallelQuickSort(elements, reverseDictionarySortComparator); this.values = new ShortArrayList(elements); }
/** * Returns the smallest ("bottom") n values in the column * * @param n The maximum number of records to return. The actual number will be smaller if n is greater than the * number of observations in the column * @return A list, possibly empty, of the smallest n observations */ public ShortArrayList bottom(int n) { ShortArrayList bottom = new ShortArrayList(); short[] values = data.toShortArray(); ShortArrays.parallelQuickSort(values); for (int i = 0; i < n && i < values.length; i++) { bottom.add(values[i]); } return bottom; }
/** * Returns the largest ("top") n values in the column * * @param n The maximum number of records to return. The actual number will be smaller if n is greater than the * number of observations in the column * @return A list, possibly empty, of the largest observations */ public ShortArrayList top(int n) { ShortArrayList top = new ShortArrayList(); short[] values = data.toShortArray(); ShortArrays.parallelQuickSort(values, ReverseShortComparator.instance()); for (int i = 0; i < n && i < values.length; i++) { top.add(values[i]); } return top; }
@Override public ShortColumn top(int n) { final ShortArrayList top = new ShortArrayList(); final short[] values = data.toShortArray(); ShortArrays.parallelQuickSort(values, descendingComparator); for (int i = 0; i < n && i < values.length; i++) { top.add(values[i]); } return new ShortColumn(name() + "[Top " + n + "]", top); }
@Override public ShortColumn bottom(final int n) { final ShortArrayList bottom = new ShortArrayList(); final short[] values = data.toShortArray(); ShortArrays.parallelQuickSort(values); for (int i = 0; i < n && i < values.length; i++) { bottom.add(values[i]); } return new ShortColumn(name() + "[Bottoms " + n + "]", bottom); }
private void serializeList(final DataOutput out, final List list) throws IOException { Class oCls = list.getClass(); if (oCls.equals(IntArrayList.class)) { serialize(out, ((IntArrayList) list).toIntArray()); } else if (oCls.equals(FloatArrayList.class)) { serialize(out, ((FloatArrayList) list).toFloatArray()); } else if (oCls.equals(DoubleArrayList.class)) { serialize(out, ((DoubleArrayList) list).toDoubleArray()); } else if (oCls.equals(ShortArrayList.class)) { serialize(out, ((ShortArrayList) list).toShortArray()); } else if (oCls.equals(ByteArrayList.class)) { serialize(out, ((ByteArrayList) list).toByteArray()); } else if (oCls.equals(LongArrayList.class)) { serialize(out, ((LongArrayList) list).toLongArray()); } else if (oCls.equals(BooleanArrayList.class)) { serialize(out, ((BooleanArrayList) list).toBooleanArray()); } else if (oCls.equals(CharArrayList.class)) { serialize(out, ((CharArrayList) list).toCharArray()); } else { serialize(out, list.size()); for (Object obj : list) { serialize(out, obj); } } }
private void serializeList(final DataOutput out, final List list) throws IOException { Class oCls = list.getClass(); if (oCls.equals(IntArrayList.class)) { serialize(out, ((IntArrayList) list).toIntArray()); } else if (oCls.equals(FloatArrayList.class)) { serialize(out, ((FloatArrayList) list).toFloatArray()); } else if (oCls.equals(DoubleArrayList.class)) { serialize(out, ((DoubleArrayList) list).toDoubleArray()); } else if (oCls.equals(ShortArrayList.class)) { serialize(out, ((ShortArrayList) list).toShortArray()); } else if (oCls.equals(ByteArrayList.class)) { serialize(out, ((ByteArrayList) list).toByteArray()); } else if (oCls.equals(LongArrayList.class)) { serialize(out, ((LongArrayList) list).toLongArray()); } else if (oCls.equals(BooleanArrayList.class)) { serialize(out, ((BooleanArrayList) list).toBooleanArray()); } else if (oCls.equals(CharArrayList.class)) { serialize(out, ((CharArrayList) list).toCharArray()); } else { serialize(out, list.size()); for (Object obj : list) { serialize(out, obj); } } }
@Override public ShortColumn lag(int n) { final int srcPos = n >= 0 ? 0 : 0 - n; final short[] dest = new short[size()]; final int destPos = n <= 0 ? 0 : n; final int length = n >= 0 ? size() - n : size() + n; for (int i = 0; i < size(); i++) { dest[i] = ShortColumnType.missingValueIndicator(); } short[] array = data.toShortArray(); System.arraycopy(array, srcPos, dest, destPos, length); return new ShortColumn(name() + " lag(" + n + ")", new ShortArrayList(dest)); }
@Override public void end() { if (elementClass == boolean.class) { parent.add(((BooleanArrayList) container).toBooleanArray()); } else if (elementClass == byte.class) { parent.add(((ByteArrayList) container).toByteArray()); } else if (elementClass == char.class) { parent.add(((CharArrayList) container).toCharArray()); } else if (elementClass == short.class) { parent.add(((ShortArrayList) container).toShortArray()); } else if (elementClass == int.class) { parent.add(((IntArrayList) container).toIntArray()); } else if (elementClass == long.class) { parent.add(((LongArrayList) container).toLongArray()); } else if (elementClass == float.class) { parent.add(((FloatArrayList) container).toFloatArray()); } else if (elementClass == double.class) { parent.add(((DoubleArrayList) container).toDoubleArray()); } else { parent.add(((ArrayList) container).toArray()); } }