/** * Gets the key/value pairs. * The array is sorted in ascending key order. * @return the key/value pairs with {@code pairs[i] = {key, value}} */ public int[][] getPairs() { final int[] keys = getKeys(); final int[][] pairs = new int[keys.length][2]; for (int i = 0; i < keys.length; i++) { pairs[i][0] = keys[i]; pairs[i][1] = getValue(keys[i]); } return pairs; }
/** * Gets the array of keys in this map, sorted in ascending order. * @return the array of keys in the map */ public int[] getKeys() { final int[] keys = new int[getSize()]; int j = 0; for (int index = 0; index < table.length; index++) { int value = table[index]; if (value != NULL) { keys[j++] = index + tableOffset; } } final Set<Integer> set = map.keySet(); for (Integer key : set) { keys[j++] = key; } Arrays.sort(keys); return keys; }
public void testSequentialAccess() { IntMap intMap = new IntMap(); assertEquals(0, intMap.getSize()); for (int i = -10000; i <= 10000; i++) { intMap.putValue(i, i + 99); } for (int i = -10000; i <= 10000; i++) { assertEquals(i + 99, intMap.getValue(i)); } assertEquals(20001, intMap.getSize()); for (int i = -10000; i <= 10000; i++) { intMap.removeValue(i); } assertEquals(0, intMap.getSize()); }
public void testClone() { IntMap intMap = new IntMap(10, 100); intMap.putValue(234, 5); intMap.putValue(2, 9); intMap.putValue(534, 1); intMap.putValue(22, 43); intMap.putValue(-8, 8232); final int[][] pairs = ((IntMap)intMap.clone()).getPairs(); assertEquals(5, pairs.length); assertEquals(-8, pairs[0][0]); assertEquals(2, pairs[1][0]); assertEquals(22, pairs[2][0]); assertEquals(234, pairs[3][0]); assertEquals(534, pairs[4][0]); assertEquals(8232, pairs[0][1]); assertEquals(9, pairs[1][1]); assertEquals(43, pairs[2][1]); assertEquals(5, pairs[3][1]); assertEquals(1, pairs[4][1]); } }
public void testRanges() { IntMap intMap = new IntMap(10, 100); intMap.putValue(234, 5); intMap.putValue(2, 9); intMap.putValue(534, 1); intMap.putValue(22, 43); intMap.putValue(-8, 8232); final int[][] ranges = intMap.getRanges(); assertEquals(2, ranges.length); assertEquals(-8, ranges[0][0]); assertEquals(534, ranges[0][1]); assertEquals(1, ranges[1][0]); assertEquals(8232, ranges[1][1]); }
private static IntMap createIntMap(BufferedImage sourceImage) { final DataBuffer dataBuffer = sourceImage.getRaster().getDataBuffer(); final Set<Integer> set = new HashSet<Integer>(); final IntMap intMap = new IntMap(0, 1000); for (int i = 0; i < dataBuffer.getSize(); i++) { final int elem = dataBuffer.getElem(i); if (!set.contains(elem)) { //System.out.println("elem = " + elem); intMap.putValue(elem, intMap.getSize()); set.add(elem); } } return intMap; }
public void testKeys() { IntMap intMap = new IntMap(10, 100); intMap.putValue(234, 5); intMap.putValue(2, 9); intMap.putValue(534, 1); intMap.putValue(22, 43); intMap.putValue(-8, 8232); final int[] keys = intMap.getKeys(); assertEquals(5, keys.length); assertEquals(-8, keys[0]); assertEquals(2, keys[1]); assertEquals(22, keys[2]); assertEquals(234, keys[3]); assertEquals(534, keys[4]); }
checkCanceled(pm); } else { final IntMap sampleColorIndexMap = new IntMap((int) minSample - 1, 4098); final ColorPaletteDef.Point[] points = imageInfo.getColorPaletteDef().getPoints(); for (int colorIndex = 0; colorIndex < points.length; colorIndex++) { sampleColorIndexMap.putValue((int) points[colorIndex].getSample(), colorIndex); for (int pixelIndex = 0; pixelIndex < data.getNumElems(); pixelIndex++) { int sample = data.getElemIntAt(pixelIndex); int colorIndex = sampleColorIndexMap.getValue(sample); rgbSamples[pixelIndex * numColorComponents] = colorIndex != IntMap.NULL ? (byte) colorIndex : (byte) noDataIndex;
throw new IllegalArgumentException(); final int[][] ranges = intMap.getRanges(); final int keyMin = ranges[0][0]; final int keyMax = ranges[0][1]; final byte[] table = new byte[keyRange + 2]; for (int i = 1; i < table.length - 1; i++) { final int value = intMap.getValue(keyMin + i - 1); table[i] = (byte) (value != IntMap.NULL ? value : undefinedIndex); final short[] table = new short[keyRange + 2]; for (int i = 1; i < table.length; i++) { final int value = intMap.getValue(keyMin + i - 1); table[i] = (short) (value != IntMap.NULL ? value : undefinedIndex); final int[] table = new int[keyRange + 2]; for (int i = 1; i < table.length; i++) { final int value = intMap.getValue(keyMin + i - 1); table[i] = value != IntMap.NULL ? value : undefinedIndex;
private static PlanarImage createByteIndexedImage(RasterDataNode raster, RenderedImage sourceImage, ImageInfo imageInfo) { ColorPaletteDef colorPaletteDef = imageInfo.getColorPaletteDef(); final double minSample = colorPaletteDef.getMinDisplaySample(); final double maxSample = colorPaletteDef.getMaxDisplaySample(); if (isClassificationBand(raster)) { final IntMap sampleColorIndexMap = new IntMap((int) minSample - 1, 4098); final ColorPaletteDef.Point[] points = colorPaletteDef.getPoints(); for (int colorIndex = 0; colorIndex < points.length; colorIndex++) { sampleColorIndexMap.putValue((int) getSample(points[colorIndex]), colorIndex); } final int undefinedIndex = colorPaletteDef.getNumPoints(); return createIndexedImage(sourceImage, sampleColorIndexMap, undefinedIndex); } else { return createByteIndexedImage(raster, sourceImage, minSample, maxSample, 1.0); } }
public static PlanarImage createMapping2(RenderedImage sourceImage, IntMap indexMap) { final Raster sourceData = sourceImage.getData(); final WritableRaster targetData = sourceData.createCompatibleWritableRaster(); final DataBuffer targetBuffer = targetData.getDataBuffer(); for (int i = 0; i < targetBuffer.getSize(); i++) { final int index = indexMap.getValue(sourceData.getDataBuffer().getElem(i)); targetBuffer.setElem(i, index); } final BufferedImage image = new BufferedImage(sourceData.getWidth(), sourceData.getHeight(), BufferedImage.TYPE_BYTE_GRAY); image.setData(targetData); return PlanarImage.wrapRenderedImage(image); }
public void testIntMap() { IntMap intMap = new IntMap(-10, 110); assertEquals(0, intMap.getSize()); intMap.putValue(-10000, -4); intMap.putValue(-1000, -3); intMap.putValue(-100, -2); intMap.putValue(-10, -1); intMap.putValue(1, 0); intMap.putValue(10, 1); intMap.putValue(100, 2); intMap.putValue(1000, 3); intMap.putValue(10000, 4); assertEquals(9, intMap.getSize()); assertEquals(-4, intMap.getValue(-10000)); assertEquals(-3, intMap.getValue(-1000)); assertEquals(-2, intMap.getValue(-100)); assertEquals(-1, intMap.getValue(-10)); assertEquals(0, intMap.getValue(1)); assertEquals(1, intMap.getValue(10)); assertEquals(2, intMap.getValue(100)); assertEquals(3, intMap.getValue(1000)); assertEquals(4, intMap.getValue(10000)); assertEquals(IntMap.NULL, intMap.getValue(-10000 + 1)); assertEquals(IntMap.NULL, intMap.getValue(-1000 + 1)); assertEquals(IntMap.NULL, intMap.getValue(-100 + 1));
throw new IllegalArgumentException(); final int[][] ranges = intMap.getRanges(); final int keyMin = ranges[0][0]; final int keyMax = ranges[0][1]; final byte[] table = new byte[keyRange + 2]; for (int i = 1; i < table.length - 1; i++) { final int value = intMap.getValue(keyMin + i - 1); table[i] = (byte) (value != IntMap.NULL ? value : undefinedIndex); final short[] table = new short[keyRange + 2]; for (int i = 1; i < table.length; i++) { final int value = intMap.getValue(keyMin + i - 1); table[i] = (short) (value != IntMap.NULL ? value : undefinedIndex); final int[] table = new int[keyRange + 2]; for (int i = 1; i < table.length; i++) { final int value = intMap.getValue(keyMin + i - 1); table[i] = value != IntMap.NULL ? value : undefinedIndex;
public void testPairs() { IntMap intMap = new IntMap(10, 100); intMap.putValue(234, 5); intMap.putValue(2, 9); intMap.putValue(534, 1); intMap.putValue(22, 43); intMap.putValue(-8, 8232); final int[][] pairs = intMap.getPairs(); assertEquals(5, pairs.length); assertEquals(-8, pairs[0][0]); assertEquals(2, pairs[1][0]); assertEquals(22, pairs[2][0]); assertEquals(234, pairs[3][0]); assertEquals(534, pairs[4][0]); assertEquals(8232, pairs[0][1]); assertEquals(9, pairs[1][1]); assertEquals(43, pairs[2][1]); assertEquals(5, pairs[3][1]); assertEquals(1, pairs[4][1]); }
/** * Gets the key/value ranges. * @return {@code ranges = {{keyMin, keyMax}, {valueMin, valueMax}}} */ public int[][] getRanges() { int[] keys = getKeys(); int keyMin = Integer.MAX_VALUE; int keyMax = Integer.MIN_VALUE; int valueMin = Integer.MAX_VALUE; int valueMax = Integer.MIN_VALUE; for (int key : keys) { keyMin = Math.min(keyMin, key); keyMax = Math.max(keyMax, key); final int value = getValue(key); valueMin = Math.min(valueMin, value); valueMax = Math.max(valueMax, value); } return new int[][]{{keyMin, keyMax}, {valueMin, valueMax}}; }