排序类型为`List <iterable <object>&gt;`</iterable <object>的列表

时间:2012-07-03 12:37:05

标签: java collections interface comparable iterable

我有一个List<Iterable<Object>>类型的列表,在某些情况下,集合中的对象也是Comparable

这意味着在某些情况下,它是一个列表,其中包含许多类型为A Comparable的对象,在某些其他情况下,它包含许多类型为B的对象Comparable。当我有一个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;
        }
    }

1 个答案:

答案 0 :(得分:1)

此答案解释了如何将Collection<A>投射到Collection<B>https://stackoverflow.com/a/1651086/1428461