| /* | |
| * Copyright (C) 2025, NVIDIA Corporation. | |
| * | |
| * This program and the accompanying materials are made available under the | |
| * terms of the Eclipse Distribution License v. 1.0 which is available at | |
| * https://www.eclipse.org/org/documents/edl-v10.php. | |
| * | |
| * SPDX-License-Identifier: BSD-3-Clause | |
| */ | |
| package org.eclipse.jgit.util; | |
| import java.util.Iterator; | |
| /** | |
| * Utility class for Iterators | |
| * | |
| * @since 6.10.2 | |
| */ | |
| public class Iterators { | |
| /** | |
| * Create an iterator which traverses an array in reverse. | |
| * | |
| * @param array T[] | |
| * @return Iterator<T> | |
| */ | |
| @SuppressWarnings("AvoidObjectArrays") | |
| public static <T> Iterator<T> reverseIterator(T[] array) { | |
| return new Iterator<>() { | |
| int index = array.length; | |
| @Override | |
| public boolean hasNext() { | |
| return index > 0; | |
| } | |
| @Override | |
| public T next() { | |
| return array[--index]; | |
| } | |
| }; | |
| } | |
| /** | |
| * Make an iterable for easy use in modern for loops. | |
| * | |
| * @param iterator Iterator<T> | |
| * @return Iterable<T> | |
| */ | |
| public static <T> Iterable<T> iterable(Iterator<T> iterator) { | |
| return new Iterable<>() { | |
| @Override | |
| public Iterator<T> iterator() { | |
| return iterator; | |
| } | |
| }; | |
| } | |
| private Iterators() { | |
| } | |
| } |