提交 a3470899 编写于 作者: xindoo's avatar xindoo

update

上级 64686fd9
......@@ -6,7 +6,7 @@
<groupId>xyz.xindoo</groupId>
<artifactId>slowjson</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
......
......@@ -4,16 +4,20 @@ import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.stream.Collectors;
public class JSONArray {
private final List<JSONObject> list;
public class JSONArray implements List<Object> {
private final List<Object> list;
public JSONArray() {
this.list = new ArrayList<>();
}
public JSONArray(List<JSONObject> list) {
public JSONArray(List<Object> list) {
this.list = new ArrayList<>(list.size());
this.list.addAll(list);
}
......@@ -34,11 +38,7 @@ public class JSONArray {
}
public JSONObject getJSONObject(int index) {
return list.get(index);
}
public void add(JSONObject jsonObject) {
list.add(jsonObject);
return (JSONObject) list.get(index);
}
@Override
......@@ -49,9 +49,138 @@ public class JSONArray {
public String toJSONString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
List<String> strList = list.stream().map(JSONObject::toString).collect(Collectors.toList());
List<String> strList = list.stream().map(Object::toString).collect(Collectors.toList());
sb.append(String.join(",", strList));
sb.append("]");
return sb.toString();
}
@Override
public boolean add(Object e) {
return this.list.add(e);
}
@Override
public void add(int index, Object element) {
this.list.add(index, element);
}
@Override
public Object set(int index, Object element) {
if (index == -1) {
this.list.add(element);
return null;
} else if (this.list.size() > index) {
return this.list.set(index, element);
} else {
for(int i = this.list.size(); i < index; ++i) {
this.list.add((Object)null);
}
this.list.add(element);
return null;
}
}
@Override
public Object get(int index) {
return this.list.get(index);
}
@Override
public boolean addAll(Collection<? extends Object> c) {
return this.list.addAll(c);
}
@Override
public ListIterator<Object> listIterator(int index) {
return this.list.listIterator(index);
}
@Override
public ListIterator<Object> listIterator() {
return this.list.listIterator();
}
@Override
public int indexOf(Object o) {
return this.list.indexOf(o);
}
@Override
public int lastIndexOf(Object o) {
return this.list.lastIndexOf(o);
}
@Override
public List<Object> subList(int fromIndex, int toIndex) {
return this.list.subList(fromIndex, toIndex);
}
@Override
public void clear() {
this.list.clear();
}
@Override
public Object remove(int index) {
return this.list.remove(index);
}
@Override
public int size() {
return this.list.size();
}
@Override
public boolean isEmpty() {
return this.list.isEmpty();
}
@Override
public boolean contains(Object o) {
return this.list.contains(o);
}
@Override
public Iterator<Object> iterator() {
return this.list.iterator();
}
@Override
public Object[] toArray() {
return this.list.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return this.list.toArray(a);
}
@Override
public boolean containsAll(Collection<?> c) {
return this.list.containsAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return this.list.retainAll(c);
}
@Override
public boolean removeAll(Collection<?> c) {
return this.list.removeAll(c);
}
@Override
public boolean addAll(int index, Collection<? extends Object> c) {
return this.list.addAll(index, c);
}
@Override
public boolean remove(Object o) {
return this.list.remove(o);
}
}
......@@ -6,6 +6,7 @@ import org.antlr.v4.runtime.CommonTokenStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Random;
......@@ -15,7 +16,23 @@ public class JSONObject {
private Map<String, Object> map;
public JSONObject() {
this.map = new HashMap<>();
this(false);
}
public JSONObject(Map<String, Object> map) {
if (map == null) {
throw new IllegalArgumentException("map is null.");
} else {
this.map = map;
}
}
public JSONObject(boolean ordered) {
if (ordered) {
this.map = new LinkedHashMap();
} else {
this.map = new HashMap();
}
}
protected JSONObject(JSONParser.ObjContext objCtx) {
......@@ -141,4 +158,25 @@ public class JSONObject {
float a = random.nextFloat();
}
}
public int size() {
return this.map.size();
}
public boolean isEmpty() {
return this.map.isEmpty();
}
public boolean containsKey(Object key) {
boolean result = this.map.containsKey(key);
if (!result && key instanceof Number) {
result = this.map.containsKey(key.toString());
}
return result;
}
public boolean containsValue(Object value) {
return this.map.containsValue(value);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册