Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sort a list from Arrays.asList() changes also the origin array?

I noticed a strange behavior (for me) when sorting a list retrieved with Arrays.asList(). It seems that after Collections.sort( list ), the origin array is also sorted !

How is it possible ?

List<Rate> rates = Arrays.asList( arrayRates );
Collections.sort( rates, new RateEffectiveDateComparator() );
/* after that the rates list AND arrayRates array are sorted in the same way */
like image 942
tbruyelle Avatar asked Jan 23 '23 12:01

tbruyelle


1 Answers

From the documentation of Arrays.asList():

Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)

The array you pass will be the array the list is based on. When sorting the list, you are actually sorting the array. Check the sourcecode of Arrays.asList()...

like image 131
Fortega Avatar answered Jan 25 '23 01:01

Fortega