Javolution 6.0.0 java
CharArray.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.text;
10 
12 
36 public final class CharArray implements CharSequence, Comparable<CharSequence> {
37 
41  private char[] _array;
42 
46  private int _offset;
47 
51  private int _length;
52 
56  public CharArray() {
57  _array = NO_CHAR;
58  }
59 
60  private static final char[] NO_CHAR = new char[0];
61 
67  public CharArray(int capacity) {
68  _array = new char[capacity];
69  }
70 
76  public CharArray(String string) {
77  _array = string.toCharArray();
78  _length = string.length();
79  }
80 
86  public char[] array() {
87  return _array;
88  }
89 
95  public int length() {
96  return _length;
97  }
98 
104  public int offset() {
105  return _offset;
106  }
107 
116  public CharArray setArray(char[] array, int offset, int length) {
117  _array = array;
118  _offset = offset;
119  _length = length;
120  return this;
121  }
122 
132  public final int indexOf(java.lang.CharSequence csq) {
133  final char c = csq.charAt(0);
134  final int csqLength = csq.length();
135  for (int i = _offset, end = _offset + _length - csqLength + 1; i < end; i++) {
136  if (_array[i] == c) { // Potential match.
137  boolean match = true;
138  for (int j = 1; j < csqLength; j++) {
139  if (_array[i + j] != csq.charAt(j)) {
140  match = false;
141  break;
142  }
143  }
144  if (match) { return i - _offset; }
145  }
146  }
147  return -1;
148  }
149 
159  public final int indexOf(char c) {
160  for (int i = _offset, end = _offset + _length; i < end; i++) {
161  if (_array[i] == c)
162  return i - _offset;
163  }
164  return -1;
165  }
166 
174  @Override
175  public String toString() {
176  return new String(_array, _offset, _length);
177  }
178 
186  @Override
187  public int hashCode() {
188  int h = 0;
189  for (int i = 0, j = _offset; i < _length; i++) {
190  h = 31 * h + _array[j++];
191  }
192  return h;
193  }
194 
203  @Override
204  public boolean equals(Object that) {
205  if (that instanceof String) {
206  return equals((String) that);
207  } else if (that instanceof CharArray) {
208  return equals((CharArray) that);
209  } else if (that instanceof java.lang.CharSequence) {
210  return equals((java.lang.CharSequence) that);
211  } else {
212  return false;
213  }
214  }
215 
216  // Do not make public or String instances may not use equals(String)
217  private boolean equals(java.lang.CharSequence chars) {
218  if (chars == null)
219  return false;
220  if (this._length != chars.length())
221  return false;
222  for (int i = _length, j = _offset + _length; --i >= 0;) {
223  if (_array[--j] != chars.charAt(i))
224  return false;
225  }
226  return true;
227  }
228 
236  public boolean equals(CharArray that) {
237  if (this == that)
238  return true;
239  if (that == null)
240  return false;
241  if (this._length != that._length)
242  return false;
243  final char[] thatArray = that._array;
244  for (int i = that._offset + _length, j = _offset + _length; --j >= _offset;) {
245  if (_array[j] != thatArray[--i])
246  return false;
247  }
248  return true;
249  }
250 
260  public boolean equals(String str) {
261  if (str == null)
262  return false;
263  if (_length != str.length())
264  return false;
265  for (int i = _length, j = _offset + _length; --i >= 0;) {
266  if (_array[--j] != str.charAt(i))
267  return false;
268  }
269  return true;
270  }
271 
281  public int compareTo(CharSequence seq) {
282  return Equalities.LEXICAL.compare(this, seq);
283  }
284 
292  public boolean toBoolean() {
293  return TypeFormat.parseBoolean(this);
294  }
295 
303  public int toInt() {
304  return TypeFormat.parseInt(this);
305  }
306 
316  public int toInt(int radix) {
317  return TypeFormat.parseInt(this, radix);
318  }
319 
328  public long toLong() {
329  return TypeFormat.parseLong(this);
330  }
331 
341  public long toLong(int radix) {
342  return TypeFormat.parseLong(this, radix);
343  }
344 
353  public float toFloat() {
354  return TypeFormat.parseFloat(this);
355  }
356 
364  public double toDouble() {
365  return TypeFormat.parseDouble(this);
366  }
367 
368  // Implements CharSequence
369  public char charAt(int index) {
370  if ((index < 0) || (index >= _length))
371  throw new IndexOutOfBoundsException("index: " + index);
372  return _array[_offset + index];
373  }
374 
375  // Implements CharSequence
376  public java.lang.CharSequence subSequence(int start, int end) {
377  if ((start < 0) || (end < 0) || (start > end) || (end > this.length()))
378  throw new IndexOutOfBoundsException();
379  CharArray chars = new CharArray();
380  chars._array = _array;
381  chars._offset = _offset + start;
382  chars._length = end - start;
383  return chars;
384  }
385 
386  // Implements CharSequence
387  public void getChars(int start, int end, char dest[], int destPos) {
388  if ((start < 0) || (end < 0) || (start > end) || (end > _length))
389  throw new IndexOutOfBoundsException();
390  System.arraycopy(_array, start + _offset, dest, destPos, end - start);
391  }
392 
393 }
javolution.text.CharArray
Definition: CharArray.java:36
javolution.text.CharArray.toBoolean
boolean toBoolean()
Definition: CharArray.java:292
javolution
javolution.text.CharArray.toInt
int toInt(int radix)
Definition: CharArray.java:316
javolution.text.CharArray.equals
boolean equals(String str)
Definition: CharArray.java:260
javolution.text.CharArray.toInt
int toInt()
Definition: CharArray.java:303
javolution.text.CharArray.equals
boolean equals(java.lang.CharSequence chars)
Definition: CharArray.java:217
javolution.util.function.Equalities.LEXICAL
static final Equality< CharSequence > LEXICAL
Definition: Equalities.java:57
javolution.text.CharArray.equals
boolean equals(Object that)
Definition: CharArray.java:204
javolution.text.CharArray.indexOf
final int indexOf(char c)
Definition: CharArray.java:159
javolution.text.CharArray.CharArray
CharArray()
Definition: CharArray.java:56
javolution.text.TypeFormat.parseDouble
static double parseDouble(CharSequence csq, Cursor cursor)
Definition: TypeFormat.java:464
javolution.text.CharArray.offset
int offset()
Definition: CharArray.java:104
javolution.text.CharArray.CharArray
CharArray(int capacity)
Definition: CharArray.java:67
javolution.text.CharArray.charAt
char charAt(int index)
Definition: CharArray.java:369
javolution.text.CharArray.compareTo
int compareTo(CharSequence seq)
Definition: CharArray.java:281
javolution.text.TypeFormat.parseBoolean
static boolean parseBoolean(CharSequence csq, Cursor cursor)
Definition: TypeFormat.java:65
Comparable
javolution.text.CharArray.toDouble
double toDouble()
Definition: CharArray.java:364
javolution.util.function.Equalities
Definition: Equalities.java:20
javolution.text.CharArray.toFloat
float toFloat()
Definition: CharArray.java:353
javolution.text.CharArray._array
char[] _array
Definition: CharArray.java:41
javolution.text.CharArray.length
int length()
Definition: CharArray.java:95
javolution.text.TypeFormat
Definition: TypeFormat.java:43
javolution.text.CharArray.CharArray
CharArray(String string)
Definition: CharArray.java:76
javolution.text.TypeFormat.parseLong
static long parseLong(CharSequence csq, int radix, Cursor cursor)
Definition: TypeFormat.java:343
javolution.text.CharArray.NO_CHAR
static final char[] NO_CHAR
Definition: CharArray.java:60
javolution.util.function
Definition: Consumer.java:9
javolution.text.CharArray.toString
String toString()
Definition: CharArray.java:175
javolution.text.CharArray.array
char[] array()
Definition: CharArray.java:86
javolution.text.CharArray.indexOf
final int indexOf(java.lang.CharSequence csq)
Definition: CharArray.java:132
javolution.text.CharArray.toLong
long toLong(int radix)
Definition: CharArray.java:341
javolution.util.function.Equality.compare
int compare(T left, T right)
javolution.text.CharArray.getChars
void getChars(int start, int end, char dest[], int destPos)
Definition: CharArray.java:387
javolution.text.CharArray.equals
boolean equals(CharArray that)
Definition: CharArray.java:236
javolution.text.CharArray.toLong
long toLong()
Definition: CharArray.java:328
javolution.text.CharArray._offset
int _offset
Definition: CharArray.java:46
javolution.text.CharArray._length
int _length
Definition: CharArray.java:51
javolution.text.CharArray.setArray
CharArray setArray(char[] array, int offset, int length)
Definition: CharArray.java:116
javolution.text.TypeFormat.parseFloat
static float parseFloat(CharSequence csq, Cursor cursor)
Definition: TypeFormat.java:436
javolution.util
Definition: FastBitSet.java:9
javolution.text.CharArray.subSequence
java.lang.CharSequence subSequence(int start, int end)
Definition: CharArray.java:376
javolution.text.CharArray.hashCode
int hashCode()
Definition: CharArray.java:187
javolution.text.TypeFormat.parseInt
static int parseInt(CharSequence csq, int radix, Cursor cursor)
Definition: TypeFormat.java:248