If your data does not change after creation, use immutable data structures. The type you choose will determine the intent of use. Anything more specifically will require knowledge of your specific problem space.
You can really find a subset, permutation, or combination generator, and then discussing data structures is controversial.
In addition, you mentioned that you understand the parallel benefits. Presumably, you throw some kind of algorithm at permutations and subsets, and there is a good chance that the algorithm can be parallelized to some extent. If, in this case, using immutable structures ahead ensures that your initial implementation of Algorithm X is easily converted to a parallel Algorithm X.
source share