public static <A> Iterable<A> iterable(final Iterator<A> it)
//package com.java2s; /*//from w ww .jav a 2s .c o m * Copyright (C) 2014 Indeed Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ import java.util.ArrayList; import java.util.Iterator; public class Main { public static <A> Iterable<A> iterable(final Iterator<A> it) { return new Iterable<A>() { boolean used = false; @Override public Iterator<A> iterator() { if (used) throw new IllegalStateException( "iterator may not be called more than once"); used = true; return it; } }; } public static <A> Iterable<A> iterable(final Iterator<A> it, boolean reusable) { if (reusable) { ArrayList<A> ret = new ArrayList<A>(); for (A t : iterable(it)) { ret.add(t); } return ret; } return iterable(it); } }