static Array create() { return new BasicArray(); }
static Array create(Iterable<?> values) { if (values == null) return create(); BasicArray array = new BasicArray(); values.forEach(obj -> array.add(Value.create(obj))); return array; }
@Override public Array clone() { return new BasicArray().addAll(this.values); }
@Override public Array setValue(int index, Value value) { if (value == null) value = Value.nullValue(); if (isValidIndex(index)) { // The index is in bounds ... values.set(index, value); } else if (isValidIndex(index - 1)) { // The index is the next valid one, so go ahead and add it ... values.add(value); } else { // The index is invalid ... throw new IllegalArgumentException("The index " + index + " is too large for this array, which has only " + size() + " values"); } return this; }
BasicArray array = new BasicArray(); JsonToken token = null; if (!nested) { switch (token) { case START_OBJECT: array.add(parseDocument(parser, true)); break; case START_ARRAY: array.add(parseArray(parser, true)); break; case VALUE_STRING: array.add(parser.getValueAsString()); break; case VALUE_TRUE: array.add(true); break; case VALUE_FALSE: array.add(false); break; case VALUE_NULL: array.addNull(); break; case VALUE_NUMBER_FLOAT: case FLOAT: if (handleFloatNumbersAsText) { array.add(parser.getText());
@Override public Array increment(int index, Value increment) { if ( !increment.isNumber() ) throw new IllegalArgumentException("The increment must be a number but is " + increment); Value current = get(index); if ( current.isNumber() ) { Value updated = Value.create(MathOps.add(current.asNumber(),increment.asNumber())); setValue(index,Value.create(updated)); } return this; }
@Override public int compareTo(Array that) { if (that == null) return 1; int size = this.size(); if (size != that.size()) return size - that.size(); Array thatArray = that; for (int i = 0; i != size; ++i) { Value thatValue = thatArray.get(i); Value thisValue = get(i); int diff = thatValue.compareTo(thisValue); if (diff != 0) return diff; } return 0; }
@Override public boolean has(int index) { return isValidIndex(index); }
protected final boolean isValidIndex(int index) { return index >= 0 && index < size(); }
BasicArray array = new BasicArray(); JsonToken token = null; if (!nested) { switch (token) { case START_OBJECT: array.add(parseDocument(parser, true)); break; case START_ARRAY: array.add(parseArray(parser, true)); break; case VALUE_STRING: array.add(parser.getValueAsString()); break; case VALUE_TRUE: array.add(true); break; case VALUE_FALSE: array.add(false); break; case VALUE_NULL: array.addNull(); break; case VALUE_NUMBER_FLOAT: case FLOAT: if (handleFloatNumbersAsText) { array.add(parser.getText());
@Override public Array increment(int index, Value increment) { if ( !increment.isNumber() ) throw new IllegalArgumentException("The increment must be a number but is " + increment); Value current = get(index); if ( current.isNumber() ) { Value updated = Value.create(MathOps.add(current.asNumber(),increment.asNumber())); setValue(index,Value.create(updated)); } return this; }
@Override public int compareTo(Array that) { if (that == null) return 1; int size = this.size(); if (size != that.size()) return size - that.size(); Array thatArray = that; for (int i = 0; i != size; ++i) { Value thatValue = thatArray.get(i); Value thisValue = get(i); int diff = thatValue.compareTo(thisValue); if (diff != 0) return diff; } return 0; }
@Override public Array setValue(int index, Value value) { if (value == null) value = Value.nullValue(); if (isValidIndex(index)) { // The index is in bounds ... values.set(index, value); } else if (isValidIndex(index - 1)) { // The index is the next valid one, so go ahead and add it ... values.add(value); } else { // The index is invalid ... throw new IllegalArgumentException("The index " + index + " is too large for this array, which has only " + size() + " values"); } return this; }
@Override public Value remove(int index) { if (isValidIndex(index)) { // The index is in bounds ... return values.remove(index); } return null; }
protected final boolean isValidIndex(int index) { return index >= 0 && index < size(); }
static Array createWithNulls(int number) { Value[] vals = new Value[number]; Arrays.fill(vals, Value.nullValue()); return new BasicArray(vals); }
static Array create(Iterable<?> values) { if (values == null) return create(); BasicArray array = new BasicArray(); values.forEach(obj -> array.add(Value.create(obj))); return array; }
@Override public Array clone() { return new BasicArray().addAll(this.values); }
@Override public Value get(int index) { return isValidIndex(index) ? values.get(index) : null; }
static Array create(Value[] values) { if (values == null || values.length == 0) { return create(); } return new BasicArray(values); }