【发布时间】:2012-07-03 12:37:05
【问题描述】:
我有一个List<Iterable<Object>> 类型的列表,在某些情况下,集合内的对象也是Comparable。
这意味着在某些情况下,它是一个列表,其中包含许多不是Comparable 的类型 A 的对象,在另一些情况下,它包含许多类型为 Comparable 的 B 类型的对象。当我有一个 B 类型的对象列表时,我希望能够对它们进行排序。
当列表中的所有对象都是Comparable 时,我需要使用Collections.sort() 或类似的东西对它们进行排序。 Java 不允许我转换整个列表,也不能转换单个元素,因为它们可能没有实现Comparable 接口。有解决办法吗?
如果有用,这是我的代码:
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;
}
}
【问题讨论】:
-
您希望您的对象如何排序?
-
除非所有元素都具有可比性,否则这将毫无意义。你实际上想做什么?如果我们知道您的真实用例是什么,我们或许可以帮助您找出确实有意义的东西。
-
@LouisWasserman 对不起,我没有解释自己。在某些情况下,List 包含许多不可比较的 A 类型对象。在其他情况下,列表包含许多可比较的 B 类型对象。
-
@Keppil 我不确定我是否理解您的问题。我希望根据我已经实现的
compareTo()方法对它们进行排序。 -
@Vitalij:在您编辑之前,您的问题表明他们可能无法实现 Comparable,因此是我的问题。我看到你得到了你想要的答案,所以一切都很好。
标签: java collections interface comparable iterable