I think sorting the types and values is the correct solution.
As it's also expected that you can retrieve types using AbstractPartial.indexOf(DateTimeFieldType), I think you need to leave iType and iValue as cloned arrays, store the sorted values in a different array, and reference the sorted arrays in the equals() and hashCode().