集册 Java实例教程 返回给定迭代器的最后一个元素。

返回给定迭代器的最后一个元素。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

944
返回给定迭代器的最后一个元素。

/**

 * Copyright (c) 2002-2013 "Neo Technology,"

 * Network Engine for Objects in Lund AB [http://neotechnology.com]

 *

 * This file is part of Neo4j.

 *

 * Neo4j is free software: you can redistribute it and/or modify

 * it under the terms of the GNU General Public License as published by

 * the Free Software Foundation, either version 3 of the License, or

 * (at your option) any later version.

 *

 * This program is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

 * GNU General Public License for more details.

 *

 * You should have received a copy of the GNU General Public License

 * along with this program.  If not, see <http://www.gnu.org/licenses/>.

 */

//package com.nowjava;/*来 自 时代Java公众号 - nowjava.com*/


import java.util.Iterator;


import java.util.NoSuchElementException;


public class Main {

    /**

     * Returns the given iterator's last element. If no element is found a

     * {@link NoSuchElementException} is thrown.

     * 

     * @param <T> the type of elements in {@code iterator}.

     * @param iterator the {@link Iterator} to get elements from.

     * @return the last element in the {@code iterator}.

     * @throws {@link NoSuchElementException} if no element found.

     */

    public static <T> T last(Iterator<T> iterator) {

        return assertNotNull(iterator, lastOrNull(iterator));

    }


    /**

     * Returns the given iterable's last element. If no element is found a

     * {@link NoSuchElementException} is thrown.

     * 

     * @param <T> the type of elements in {@code iterable}.

     * @param iterable the {@link Iterable} to get elements from.

     * @return the last element in the {@code iterable}.

     * @throws {@link NoSuchElementException} if no element found.

     */

    public static <T> T last(Iterable<T> iterable) {

        return last(iterable.iterator());

    }


    private static <T> T assertNotNull(Iterator<T> iterator, T result) {/*来自 时 代 J a v a 公 众 号 - N o w J a v  a . c o m*/

        if (result == null) {

            throw new NoSuchElementException("No element found in "

                    + iterator);

        }

        return result;

    }


    /**

     * Returns the given iterator's last element or {@code null} if no

     * element found.

     * 

     * @param <T> the type of elements in {@code iterator}.

     * @param iterator the {@link Iterator} to get elements from.

     * @return the last element in the {@code iterator}, or {@code null} if no

     * element found.

     */

    public static <T> T lastOrNull(Iterator<T> iterator) {

        T result = null;

        while (iterator.hasNext()) {

            result = iterator.next();

        }

        
展开阅读全文