Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/IntVector.java @ 551:4ea0351ca878
Better (precise) name for diff facility, tests
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 20 Feb 2013 18:19:52 +0100 |
parents | 83afa680555d |
children | 45751456b471 |
comparison
equal
deleted
inserted
replaced
550:c1478cc31f45 | 551:4ea0351ca878 |
---|---|
40 this.increment = increment; | 40 this.increment = increment; |
41 } | 41 } |
42 | 42 |
43 public void add(int v) { | 43 public void add(int v) { |
44 if (count == data.length) { | 44 if (count == data.length) { |
45 grow(); | 45 grow(0); |
46 } | 46 } |
47 data[count++] = v; | 47 data[count++] = v; |
48 } | |
49 | |
50 public void add(int... values) { | |
51 if (count + values.length > data.length) { | |
52 grow(count + values.length - data.length); | |
53 } | |
54 for (int v : values) { | |
55 data[count++] = v; | |
56 } | |
48 } | 57 } |
49 | 58 |
50 public int get(int i) { | 59 public int get(int i) { |
51 if (i < 0 || i >= count) { | 60 if (i < 0 || i >= count) { |
52 throw new IndexOutOfBoundsException(String.format("Index: %d, size: %d", i, count)); | 61 throw new IndexOutOfBoundsException(String.format("Index: %d, size: %d", i, count)); |
93 return data; | 102 return data; |
94 } | 103 } |
95 return toArray(); | 104 return toArray(); |
96 } | 105 } |
97 | 106 |
98 private void grow() { | 107 private void grow(int newCapacityHint) { |
99 if (increment == 0) { | 108 if (increment == 0) { |
100 throw new UnsupportedOperationException("This vector is not allowed to expand"); | 109 throw new UnsupportedOperationException("This vector is not allowed to expand"); |
101 } | 110 } |
102 int newCapacity = increment < 0 ? data.length << 1 : data.length + increment; | 111 int newCapacity = increment < 0 ? data.length << 1 : data.length + increment; |
112 if (newCapacityHint > 0 && newCapacity < newCapacityHint) { | |
113 newCapacity = newCapacityHint; | |
114 } | |
103 assert newCapacity > 0 && newCapacity != data.length : newCapacity; | 115 assert newCapacity > 0 && newCapacity != data.length : newCapacity; |
104 int[] newData = new int[newCapacity]; | 116 int[] newData = new int[newCapacity]; |
105 System.arraycopy(data, 0, newData, 0, count); | 117 System.arraycopy(data, 0, newData, 0, count); |
106 data = newData; | 118 data = newData; |
107 } | 119 } |