@@ -52,36 +52,27 @@ public BasicIotAnyVector(Scalar[] scalars) {
52
52
53
53
protected BasicIotAnyVector (ExtendedDataInput in ) throws IOException {
54
54
super (DATA_FORM .DF_VECTOR );
55
- int rows = in .readInt ();
56
- int cols = in .readInt (); // 1
57
- long size = in .readInt ();
55
+ BasicAnyVector anyVector = new BasicAnyVector (in );
56
+ BasicIntVector intVector = (BasicIntVector ) anyVector .get (0 );
57
+ int indexsLen = ((BasicInt ) intVector .get (0 )).getInt ();
58
+ int subVecNum = ((BasicInt ) intVector .get (1 )).getInt ();
59
+ int [] tmpIntArray = new int [indexsLen ];
60
+ System .arraycopy (intVector .getdataArray (), 2 , tmpIntArray ,0 , indexsLen );
61
+ indexs = new BasicIntVector (tmpIntArray );
62
+ tmpIntArray = new int [indexsLen ];
63
+ System .arraycopy (intVector .getdataArray (), (indexsLen ) + 2 , tmpIntArray ,0 , indexsLen );
64
+ indexsDataType = new BasicIntVector (tmpIntArray );
58
65
59
- indexsDataType = new BasicIntVector (0 );
60
- indexs = new BasicIntVector (0 );
61
- for (long i = 0 ; i < size ; i ++){
62
- int type = in .readInt ();
63
- int idx = in .readInt ();
64
- indexsDataType .add (type );
65
- indexs .add (idx );
66
- }
67
-
68
- int typeSize = in .readInt ();
69
66
subVector = new HashMap <>();
70
- for (int i = 0 ; i < typeSize ; i ++) {
71
- short flag = in .readShort ();
72
- int form = flag >>8 ;
73
- int type = flag & 0xff ;
74
- boolean extended = type >= 128 ;
75
- if (type >= 128 )
76
- type -= 128 ;
77
- Entity obj = BasicEntityFactory .instance ().createEntity (DATA_FORM .values ()[form ], DATA_TYPE .valueOf (type ), in , extended );
78
- subVector .put (type , obj );
67
+ for (int i = 1 ; i <= subVecNum ; i ++) {
68
+ DATA_TYPE dataType = anyVector .get (i ).getDataType ();
69
+ subVector .put (dataType .getValue (), anyVector .get (i ));
79
70
}
80
71
}
81
72
82
73
public Entity get (int index ) {
83
- if (index >= rows ())
84
- throw new RuntimeException (String .format ("index %s out of rows %s." , index , rows ()));
74
+ if (index >= indexs . rows ())
75
+ throw new RuntimeException (String .format ("index %s out of %s." , index , indexs . rows ()));
85
76
86
77
BasicInt curDataType = (BasicInt ) indexsDataType .get (index );
87
78
BasicInt curIndex = (BasicInt ) indexs .get (index );
@@ -128,7 +119,7 @@ public DATA_TYPE getDataType() {
128
119
129
120
@ Override
130
121
public int rows () {
131
- return indexs . rows () ;
122
+ return subVector . size () + 1 ;
132
123
}
133
124
134
125
@ JsonIgnore
@@ -153,7 +144,7 @@ public void Append(Vector value) {
153
144
154
145
public String getString (){
155
146
StringBuilder sb = new StringBuilder ("[" );
156
- for (int i = 0 ; i < rows (); i ++)
147
+ for (int i = 0 ; i < indexs . rows (); i ++)
157
148
sb .append (getString (i )).append ("," );
158
149
159
150
sb .setLength (sb .length () - 1 );
@@ -178,20 +169,26 @@ public int serialize(int indexStart, int offect, int targetNumElement, AbstractV
178
169
179
170
@ Override
180
171
protected void writeVectorToOutputStream (ExtendedDataOutput out ) throws IOException {
181
- int size = indexs .rows ();
182
- out .writeInt (size );
172
+ int [] tmpIntArray = new int [indexs .rows () * 2 + 2 ];
183
173
184
- for (int i = 0 ; i < size ; i ++) {
185
- out .writeInt (indexsDataType .getInt (i ));
186
- out .writeInt (indexs .getInt (i ));
187
- }
174
+ tmpIntArray [0 ] = indexs .rows ();
175
+ tmpIntArray [1 ] = subVector .size ();
176
+
177
+ System .arraycopy (indexs .getdataArray (), 0 , tmpIntArray ,2 , indexs .rows ());
178
+ System .arraycopy (indexsDataType .getdataArray (), 0 , tmpIntArray , indexs .rows () + 2 , indexsDataType .size );
179
+ BasicIntVector intVector = new BasicIntVector (tmpIntArray );
188
180
189
- out .writeInt (subVector .size ());
181
+ Entity [] entities = new Entity [1 + subVector .size ()];
182
+ entities [0 ] = intVector ;
190
183
184
+ int index = 1 ;
191
185
for (Entity value : subVector .values ()) {
192
- if ( Objects . nonNull ( value ))
193
- value . write ( out ) ;
186
+ entities [ index ] = value ;
187
+ index ++ ;
194
188
}
189
+
190
+ BasicAnyVector anyVector = new BasicAnyVector (entities , false );
191
+ anyVector .writeVectorToOutputStream (out );
195
192
}
196
193
197
194
@ Override
0 commit comments