I have a list of type List<Iterable<Object>> and in some case the objects that are inside the collection are also Comparable.
That means that in some cases it is a list that contains many objects of type A that is not Comparable, in some other cases it contains many objects of type B that are Comparable. When I have a list of objects of type B, I want to be able to sort them.
When all the objects inside the list are Comparable I need to sort them, using Collections.sort() or something similar. Java does not allow me to cast the entire list, and I can’t cast single elements, because they may not implement the Comparable interface. Is there a work around?
If it is useful, this is my code:
Iterable<Object> iterable;
List<Iterable<Object>> valori = new ArrayList<Iterable<Object>>();
Integer valoriLetti = 0;
iterable = new ArrayList<Object>();
while (iterable != null && valoriLetti < numero) {
// Object object = beanReader.read();
try {
iterable = (Iterable<Object>) beanReader.read();
} catch (InvalidRecordException ex) {
log.error(this.toString());
log.error(ex);
log.error(ex.getStackTrace());
}
if (iterable != null) {
((IEntityAmount) iterable).moltiplicaImporti();
((IEntityAmount) iterable).troncaImporti();
valori.add(iterable);
valoriLetti += 1;
// if (iterable.iterator().hasNext()) {
// valori.add(leggiValori(iterable));
// valoriLetti += 1;
// }
} else {
break;
}
}
This answer explains how you can cast a
Collection<A>toCollection<B>: https://stackoverflow.com/a/1651086/1428461