【问题标题】:Sorting an list of type `List<Iterable<Object>>`对“List<Iterable<Object>>”类型的列表进行排序
【发布时间】:2012-07-03 12:37:05
【问题描述】:

我有一个List&lt;Iterable&lt;Object&gt;&gt; 类型的列表,在某些情况下,集合内的对象也是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


【解决方案1】:

这个答案解释了如何将Collection&lt;A&gt; 转换为Collection&lt;B&gt;https://stackoverflow.com/a/1651086/1428461

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2016-03-01
    • 2021-03-26
    • 2021-02-12
    相关资源
    最近更新 更多