/******************************************************************************* * Copyright (c) 2009, 2010 EclipseSource and others. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.equinox.p2.query; import java.util.Iterator; import java.util.Set; /** * An IQueryResult represents the results of a query. * * @since 2.0 */ public interface IQueryResult<T> extends IQueryable<T> { /** * Returns whether this QueryResult is empty. * @return <code>true</code> if this QueryResult has accepted any results, * and <code>false</code> otherwise. */ public boolean isEmpty(); /** * Returns an iterator on the collected objects. * * @return an iterator of the collected objects. */ public Iterator<T> iterator(); /** * Returns the collected objects as an array * * @param clazz The type of array to return * @return The array of results * @throws ArrayStoreException the runtime type of the specified array is * not a super-type of the runtime type of every collected object */ public T[] toArray(Class<T> clazz); /** * Creates a new Set copy with the contents of this query result. The * copy can be altered without any side effects on its origin. * @return A detached copy of the result. */ public Set<T> toSet(); /** * Returns a Set backed by this query result. The set is immutable. * @return A Set backed by this query result. */ public Set<T> toUnmodifiableSet(); }