11package org .javawebstack .abstractdata ;
22
3+ import com .google .gson .Gson ;
34import com .google .gson .JsonArray ;
45import com .google .gson .JsonElement ;
56
6- import java .util .ArrayList ;
7- import java .util .Iterator ;
8- import java .util .List ;
9- import java .util .Map ;
7+ import java .util .*;
108import java .util .stream .Stream ;
119
1210public class AbstractArray implements AbstractElement , Iterable <AbstractElement > {
1311
14- private final List <AbstractElement > elements = new ArrayList <>() ;
12+ private final List <AbstractElement > elements ;
1513
1614 public boolean isArray () {
1715 return true ;
@@ -52,6 +50,24 @@ public AbstractArray add(AbstractElement element) {
5250 return this ;
5351 }
5452
53+ public AbstractArray (){
54+ elements = new ArrayList <>();
55+ }
56+
57+ public AbstractArray (Object [] objects ){
58+ this ();
59+ for (Object o : objects ) {
60+ if (o instanceof AbstractElement )
61+ elements .add ((AbstractElement ) o );
62+ else
63+ elements .add (AbstractElement .fromAbstractObject (o ));
64+ }
65+ }
66+
67+ public AbstractArray (Collection <Object > abstractElements ){
68+ this (abstractElements .toArray ());
69+ }
70+
5571 public AbstractArray addNull () {
5672 return add (AbstractNull .INSTANCE );
5773 }
@@ -110,6 +126,10 @@ public AbstractArray remove(int i){
110126 return this ;
111127 }
112128
129+ public AbstractElement [] toArray (){
130+ return elements .toArray (new AbstractElement [0 ]);
131+ }
132+
113133 public AbstractElement get (int i ){
114134 return elements .get (i );
115135 }
@@ -122,6 +142,14 @@ public int size() {
122142 return elements .size ();
123143 }
124144
145+ public boolean contains (Object o ){
146+ for (AbstractElement element : elements ) {
147+ if (o instanceof AbstractElement ? ((AbstractElement ) o ).toAbstractObject ().equals (element .toAbstractObject ()) : element .toAbstractObject ().equals (o ))
148+ return true ;
149+ }
150+ return false ;
151+ }
152+
125153 public AbstractArray clear () {
126154 elements .clear ();
127155 return this ;
@@ -149,6 +177,15 @@ public static AbstractArray fromJson(JsonArray array){
149177 return a ;
150178 }
151179
180+
181+ public static AbstractArray fromArray (Object [] objects ){
182+ return new AbstractArray (objects );
183+ }
184+
185+ public static AbstractArray fromList (Collection collection ){
186+ return new AbstractArray (collection );
187+ }
188+
152189 public Type getType () {
153190 return Type .ARRAY ;
154191 }
0 commit comments