LinkedList : Collections.max() throwing NoSuchElementException

爷,独闯天下 提交于 2019-11-28 14:04:39
/**
 * Returns the maximum element of the given collection, according to the
 * <i>natural ordering</i> of its elements.  All elements in the
 * collection must implement the <tt>Comparable</tt> interface.
 * Furthermore, all elements in the collection must be <i>mutually
 * comparable</i> (that is, <tt>e1.compareTo(e2)</tt> must not throw a
 * <tt>ClassCastException</tt> for any elements <tt>e1</tt> and
 * <tt>e2</tt> in the collection).<p>
 *
 * This method iterates over the entire collection, hence it requires
 * time proportional to the size of the collection.
 *
 * @param  coll the collection whose maximum element is to be determined.
 * @return the maximum element of the given collection, according
 *         to the <i>natural ordering</i> of its elements.
 * @throws ClassCastException if the collection contains elements that are
 *         not <i>mutually comparable</i> (for example, strings and
 *         integers).
 * @throws NoSuchElementException if the collection is empty. <---------------
 * @see Comparable
 */
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)

you are calling Collections.max() with empty list.

You are not checking against Empty case: So Collections.max() will throw NoSuchElementException

First check if any of the Lists is Empty (then you know the max and which list is providing it)

    Integer max;
    int list;
    if (first.isEmpty()) {
        max = Collections.max(second);
        list = 2;
    } else if (second.isEmpty()) {
        max = Collections.max(first);
        list = 1;
    } else {
        Integer max1 = Collections.max(first);
        Integer max2 = Collections.max(second);
        if (max1 > max2) {
            max = max1;
            list = 1;
        } else {
            max = max2;
            list = 2;
        }
    }
    System.out.println(list + " " + max);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!