public static Iterable<Table> listTables(final DataStore dataStore,
                                             final @Nullable String fromTableExclusive,
                                             final long limit) {
        return RestartingStreamingIterator.stream(fromTableExclusive, limit,
                new StreamingIteratorSupplier<Table, String>() {
                    @Override
                    public Iterator<Table> get(String fromToken, long limit) {
                        return dataStore.listTables(fromToken, limit);
                    }

                    @Override
                    public String getNextToken(Table table) {
                        return table.getName();
                    }
                });
    }
public static Iterable < Table > listTables ( final DataStore dataStore , final @ Nullable String fromTableExclusive , final long limit ) { return RestartingStreamingIterator . stream ( fromTableExclusive , limit , new StreamingIteratorSupplier < Table , String > ( ) { @ Override public Iterator < Table > get ( String fromToken , long limit ) { return dataStore . listTables ( fromToken , limit ) ; } @ Override public String getNextToken ( Table table ) { return table . getName ( ) ; } } ) ; }
Retrieves metadata about up to {@code limit} tables.  The records will be returned in a deterministic
order but not sorted alphabetically by key.  If {@code fromTableExclusive} is not null, the list will
start with the first table that follows the specified key in the returned sort order.