Example usage for java.util ArrayList subList

List of usage examples for java.util ArrayList subList

Introduction

In this page you can find the example usage for java.util ArrayList subList.

Prototype

public List<E> subList(int fromIndex, int toIndex) 

Source Link

Document

Returns a view of the portion of this list between the specified fromIndex , inclusive, and toIndex , exclusive.

Usage

From source file:com.andersson.minesweeper.util.IabHelper.java

private int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
        throws RemoteException, JSONException {
    logDebug("Querying SKU details.");
    ArrayList<String> skuList = new ArrayList<String>();
    skuList.addAll(inv.getAllOwnedSkus(itemType));
    if (moreSkus != null) {
        for (String sku : moreSkus) {
            if (!skuList.contains(sku)) {
                skuList.add(sku);//from  w ww.ja  v a2s. com
            }
        }
    }

    if (skuList.size() == 0) {
        logDebug("queryPrices: nothing to do because there are no SKUs.");
        return BILLING_RESPONSE_RESULT_OK;
    }

    // Split the sku list in blocks of no more than 20 elements.
    ArrayList<ArrayList<String>> packs = new ArrayList<ArrayList<String>>();
    ArrayList<String> tempList;
    int n = skuList.size() / 20;
    int mod = skuList.size() % 20;
    for (int i = 0; i < n; i++) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(i * 20, i * 20 + 20)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }
    if (mod != 0) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(n * 20, n * 20 + mod)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }

    for (ArrayList<String> skuPartList : packs) {
        Bundle querySkus = new Bundle();
        querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuPartList);
        Bundle skuDetails = mService.getSkuDetails(3, mPackageName, itemType, querySkus);

        if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
            int response = getResponseCodeFromBundle(skuDetails);
            if (response != BILLING_RESPONSE_RESULT_OK) {
                logDebug("getSkuDetails() failed: " + getResponseDesc(response));
                return response;
            } else {
                logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                return IABHELPER_BAD_RESPONSE;
            }
        }

        ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);

        for (String thisResponse : responseList) {
            SkuDetails d = new SkuDetails(itemType, thisResponse);
            logDebug("Got sku details: " + d);
            inv.addSkuDetails(d);
        }
    }

    return BILLING_RESPONSE_RESULT_OK;
}

From source file:com.ffmpeger.card.iabutils.IabHelper.java

int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
        throws RemoteException, JSONException {
    logDebug("Querying SKU details.");
    ArrayList<String> skuList = new ArrayList<String>();
    skuList.addAll(inv.getAllOwnedSkus(itemType));
    if (moreSkus != null) {
        for (String sku : moreSkus) {
            if (!skuList.contains(sku)) {
                skuList.add(sku);/*w  ww.  j  a v a 2s  . com*/
            }
        }
    }

    if (skuList.size() == 0) {
        logDebug("queryPrices: nothing to do because there are no SKUs.");
        return BILLING_RESPONSE_RESULT_OK;
    }

    // Split the sku list in blocks of no more than 20 elements.
    ArrayList<ArrayList<String>> packs = new ArrayList<ArrayList<String>>();
    ArrayList<String> tempList;
    int n = skuList.size() / 20;
    int mod = skuList.size() % 20;
    for (int i = 0; i < n; i++) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(i * 20, i * 20 + 20)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }
    if (mod != 0) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(n * 20, n * 20 + mod)) {
            tempList.add(s);
        }
        packs.add(tempList);

        for (ArrayList<String> skuPartList : packs) {
            Bundle querySkus = new Bundle();
            querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuPartList);
            Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus);

            if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
                int response = getResponseCodeFromBundle(skuDetails);
                if (response != BILLING_RESPONSE_RESULT_OK) {
                    logDebug("getSkuDetails() failed: " + getResponseDesc(response));
                    return response;
                } else {
                    logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                    return IABHELPER_BAD_RESPONSE;
                }
            }

            ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);

            for (String thisResponse : responseList) {
                SkuDetails d = new SkuDetails(itemType, thisResponse);
                logDebug("Got sku details: " + d);
                inv.addSkuDetails(d);
            }
        }

    }

    return BILLING_RESPONSE_RESULT_OK;
}

From source file:antiboring.game.controller.appBilling.util.IabHelper.java

int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
        throws RemoteException, JSONException {
    logDebug("Querying SKU details.");
    ArrayList<String> skuList = new ArrayList<String>();
    skuList.addAll(inv.getAllOwnedSkus(itemType));
    if (moreSkus != null) {
        for (String sku : moreSkus) {
            if (!skuList.contains(sku)) {
                skuList.add(sku);/*from w  w  w.  j  a  v a2  s.  co  m*/
            }
        }
    }

    if (skuList.size() == 0) {
        logDebug("queryPrices: nothing to do because there are no SKUs.");
        return BILLING_RESPONSE_RESULT_OK;
    }

    // Split the sku list in blocks of no more than 20 elements.
    ArrayList<ArrayList<String>> packs = new ArrayList<ArrayList<String>>();
    ArrayList<String> tempList;
    int n = skuList.size() / 20;
    int mod = skuList.size() % 20;
    for (int i = 0; i < n; i++) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(i * 20, i * 20 + 20)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }
    if (mod != 0) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(n * 20, n * 20 + mod)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }

    for (ArrayList<String> skuPartList : packs) {
        Bundle querySkus = new Bundle();
        querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuPartList);
        Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus);

        if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
            int response = getResponseCodeFromBundle(skuDetails);
            if (response != BILLING_RESPONSE_RESULT_OK) {
                logDebug("getSkuDetails() failed: " + getResponseDesc(response));
                return response;
            } else {
                logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                return IABHELPER_BAD_RESPONSE;
            }
        }

        ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);

        for (String thisResponse : responseList) {
            SkuDetails d = new SkuDetails(itemType, thisResponse);
            logDebug("Got sku details: " + d);
            inv.addSkuDetails(d);
        }
    }

    return BILLING_RESPONSE_RESULT_OK;
}

From source file:com.wolvereness.bluebutton.crash.ExceptionMessage.java

public Report(final String text) {
    final ArrayList<String> lines;
    { // _LINES_//from w  w w  .ja  v a 2s.  c  o  m
        int i;
        if ((i = text.indexOf('\r')) != -1) {
            if (text.startsWith("\r\n", i)) { // StartsWith prevents OOB exception
                lines = Splitter.splitAll(text, "\r\n");
            } else {
                lines = Splitter.splitAll(text, '\r');
            }
        } else {
            lines = Splitter.splitAll(text, '\n');
        }
    } // _LINES_

    final ImmutableMap.Builder<Nodes, Node> nodes = ImmutableMap.builder();
    final ListIterator<String> it = lines.listIterator(lines.size() - 1);

    { // _DETAILS_
        int count = 0; // Number of lines with no "- " for sub-listing
        while (true) {
            String entry = it.previous();
            if (entry.startsWith(START)) {
                if (entry.startsWith(WORLD, 2)) {
                    continue; // Process this at end
                }

                final int colon = entry.indexOf(':');
                Nodes type = Nodes.valueOf(entry.substring(2, colon).toUpperCase().replace(' ', '_'));
                if (type == null) {
                    type = Nodes._NA;
                }
                final List<String> subList = lines.subList(it.nextIndex(), it.nextIndex() + count);
                final Node node = type.makeNode(entry.substring(colon + 1), subList);
                nodes.put(type, node);

                count = 0; // Reset count, as it is used for sub-listing
            } else if (entry.equals(DETAILS_START)) {
                {
                    final ArrayList<String> worlds = new ArrayList<String>();
                    while (it.hasNext()) {
                        entry = it.next();
                        if (entry.startsWith(WORLD_START)) {
                            worlds.add(entry);
                        }
                    }
                    nodes.put(Nodes.WORLD, Nodes.WORLD.makeNode(null, worlds));
                }

                while (!it.previous().equals(DETAILS_START)) {
                }
                if (!it.previous().equals("")) // NOTE_0- blank line preceding details check, see NOTE_0- below
                    throw new IllegalStateException("Expected blank line in " + lines.toString());
                while (!it.previous().startsWith(DESCRIPTION_START)) {
                }
                it.next(); // Description_start
                it.next(); // Blank line
                break; // We're done in the loop
            } else {
                count++;
            }
        }
    } // _DETAILS_

    { // _STACK_
        final LinkedList<ExceptionMessage> exceptions = new LinkedList<ExceptionMessage>();
        final List<StackTraceElement> stacks = new ArrayList<StackTraceElement>();
        final List<String> description = new ArrayList<String>();
        description.add(it.next()); // Initialize; first line is always first exception
        for (String entry = it.next(); !entry.equals(DETAILS_START); entry = it.next()) {
            // Read in all the exception information.
            // Apocalypse if the formating changes...
            if (entry.startsWith(STACK_START)) {
                // Normal stack element
                stacks.add(toStackTraceElement(entry));
            } else if (entry.startsWith(STACK_MORE_START)) {
                // "... n more" final line
                final ExceptionMessage previous = exceptions.getLast();
                final List<StackTraceElement> previousTrace = previous.getStackTrace();
                entry = entry.substring(STACK_MORE_START.length(), entry.length() - STACK_MORE_END.length());
                final int stackCount = Integer.valueOf(entry);
                stacks.addAll(previousTrace.subList(previousTrace.size() - stackCount, previousTrace.size()));
                exceptions.add(new ExceptionMessage(description, stacks));

                // Reset our counters
                description.clear();
                stacks.clear();
            } else if (entry.startsWith(CAUSED_START)) {
                // Finish old exception
                if (description.size() != 0) {
                    exceptions.add(new ExceptionMessage(description, stacks));
                    description.clear();
                    stacks.clear();
                }

                // New exception
                description.add(entry.substring(CAUSED_START.length()));
            } else {
                // Random description information
                description.add(entry);
            }
        }
        description.remove(description.size() - 1); // NOTE_0- There will be a blank line here, see NOTE_0- above
        if (description.size() != 0) {
            exceptions.add(new ExceptionMessage(description, stacks));
        }

        this.exceptions = ImmutableList.copyOf(exceptions);
    } // _STACK_

    while (!it.previous().startsWith(DESCRIPTION_START)) {
    } // This puts us on the line before the "description:"
    it.next(); // Push iterator for description_start to hit twice

    this.description = it.previous().substring(DESCRIPTION_START.length());

    { // _TIMESTAMP_
        final String timeStamp = it.previous().substring(TIME_START.length());
        Date time = null;
        try {
            time = (Date) DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.parseObject(timeStamp);
        } catch (final ParseException ex) {
            try {
                time = new SimpleDateFormat().parse(timeStamp);
            } catch (final ParseException e) {
            }
        }
        this.time = time == null ? new Date(0l) : time;
    } // _TIMESTAMP_

    it.previous(); // Blank line after joke
    this.fun = it.previous();

    this.nodes = nodes.build();
}

From source file:com.smartmobilesoftware.util.IabHelper.java

int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
        throws RemoteException, JSONException {
    logDebug("Querying SKU details.");
    ArrayList<String> skuList = new ArrayList<String>();
    skuList.addAll(inv.getAllOwnedSkus(itemType));
    if (moreSkus != null) {
        logDebug("moreSkus: Building SKUs List");
        for (String sku : moreSkus) {
            logDebug("moreSkus: " + sku);
            if (!skuList.contains(sku)) {
                skuList.add(sku);//from   w  w w.  j  av  a2s . c o m
            }
        }
    }

    if (skuList.size() == 0) {
        logDebug("queryPrices: nothing to do because there are no SKUs.");
        return BILLING_RESPONSE_RESULT_OK;
    }

    // Split the SKUs into slices of maximum 20 entries before querying them to prevent 
    // "Input Error: skusBundle array associated with key ITEM_ID_LIST cannot contain more than 20 items."
    while (skuList.size() > 0) {
        ArrayList<String> skuSubList = new ArrayList<String>(skuList.subList(0, Math.min(19, skuList.size())));
        skuList.removeAll(skuSubList);

        Bundle querySkus = new Bundle();
        querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuSubList);
        Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus);

        if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
            int response = getResponseCodeFromBundle(skuDetails);
            if (response != BILLING_RESPONSE_RESULT_OK) {
                logDebug("getSkuDetails() failed: " + getResponseDesc(response));
                return response;
            } else {
                logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                return ERR_BAD_RESPONSE;
            }
        }

        ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);

        for (String thisResponse : responseList) {
            SkuDetails d = new SkuDetails(itemType, thisResponse);
            logDebug("Got sku details: " + d);
            inv.addSkuDetails(d);
        }
    }
    return BILLING_RESPONSE_RESULT_OK;
}

From source file:com.segma.trim.InAppBillingUtilities.InAppBillingHelper.java

int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
        throws RemoteException, JSONException {
    logDebug("Querying SKU details.");
    ArrayList<String> skuList = new ArrayList<String>();
    skuList.addAll(inv.getAllOwnedSkus(itemType));
    if (moreSkus != null) {
        for (String sku : moreSkus) {
            if (!skuList.contains(sku)) {
                skuList.add(sku);/*from ww  w.  j ava  2  s.  c  o  m*/
            }
        }
    }

    if (skuList.size() == 0) {
        logDebug("queryPrices: nothing to do because there are no SKUs.");
        return BILLING_RESPONSE_RESULT_OK;
    }

    // Split the sku list in blocks of no more than 20 elements.
    ArrayList<ArrayList<String>> packs = new ArrayList<ArrayList<String>>();
    ArrayList<String> tempList;
    int n = skuList.size() / 20;
    int mod = skuList.size() % 20;
    for (int i = 0; i < n; i++) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(i * 20, i * 20 + 20)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }
    if (mod != 0) {
        tempList = new ArrayList<String>();
        for (String s : skuList.subList(n * 20, n * 20 + mod)) {
            tempList.add(s);
        }
        packs.add(tempList);
    }

    for (ArrayList<String> skuPartList : packs) {
        Bundle querySkus = new Bundle();
        querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuPartList);
        Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus);

        if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
            int response = getResponseCodeFromBundle(skuDetails);
            if (response != BILLING_RESPONSE_RESULT_OK) {
                logDebug("getSkuDetails() failed: " + getResponseDesc(response));
                return response;
            } else {
                logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                return IABHELPER_BAD_RESPONSE;
            }
        }

        ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);

        for (String thisResponse : responseList) {
            StockKeepingUnitDetails d = new StockKeepingUnitDetails(itemType, thisResponse);
            logDebug("Got sku details: " + d);
            inv.addSkuDetails(d);
        }
    }

    return BILLING_RESPONSE_RESULT_OK;
}

From source file:MSUmpire.PeptidePeakClusterDetection.PDHandlerBase.java

protected void PeakCurveCorrClustering(XYData mzRange) throws IOException {
    Logger.getRootLogger().info("Grouping isotopic peak curves........");

    LCMSPeakBase.PeakClusters = new ArrayList<>();

    //Thread pool
    final ForkJoinPool fjp = new ForkJoinPool(NoCPUs);
    //        ArrayList<PeakCurveClusteringCorrKDtree> ResultList = new ArrayList<>();
    final ArrayList<ForkJoinTask<ArrayList<PeakCluster>>> ftemp = new ArrayList<>();
    final int end_idx = LCMSPeakBase.UnSortedPeakCurves.size();
    final ArrayList<PeakCluster> resultClusters = new ArrayList<>();
    //For each peak curve
    //        for (PeakCurve Peakcurve : LCMSPeakBase.UnSortedPeakCurves) {
    for (int i = 0; i < end_idx; ++i) {
        final PeakCurve Peakcurve = LCMSPeakBase.UnSortedPeakCurves.get(i);
        if (Peakcurve.TargetMz >= mzRange.getX() && Peakcurve.TargetMz <= mzRange.getY()) {
            //Create a thread unit for doing isotope clustering given a peak curve as the monoisotope peak
            PeakCurveClusteringCorrKDtree unit = new PeakCurveClusteringCorrKDtree(Peakcurve,
                    LCMSPeakBase.GetPeakCurveSearchTree(), parameter, IsotopePatternMap,
                    LCMSPeakBase.StartCharge, LCMSPeakBase.EndCharge, LCMSPeakBase.MaxNoPeakCluster,
                    LCMSPeakBase.MinNoPeakCluster);
            //                ResultList.add(unit);
            ftemp.add(fjp.submit(unit));
        }/*from   ww  w.j  a  v a  2  s  .  c o m*/
        if (step_pccc == -1)
            step_pccc = fjp.getParallelism() * 32;
        final boolean last_iter = i + 1 == end_idx;
        if (ftemp.size() == step_pccc || last_iter) {
            final List<ForkJoinTask<ArrayList<PeakCluster>>> ftemp_sublist_view = last_iter ? ftemp
                    : ftemp.subList(0, step_pccc / 2);
            for (final ForkJoinTask<ArrayList<PeakCluster>> fut : ftemp_sublist_view)
                try {
                    resultClusters.addAll(fut.get());
                } catch (InterruptedException | ExecutionException ex) {
                    throw new RuntimeException(ex);
                }
            ftemp_sublist_view.clear();
            if (!last_iter && fjp.getActiveThreadCount() < fjp.getParallelism()) {
                //                    System.out.println("PeakCurveSmoothingUnit: fjp.getActiveThreadCount()\t"+fjp.getActiveThreadCount()+"\t"+step_pccc);
                step_pccc *= 2;
            }
        }
    }

    assert ftemp.isEmpty() : "temp storage for futures should be empty by end of loop";
    fjp.shutdown();

    try {
        fjp.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
    } catch (InterruptedException e) {
        Logger.getRootLogger().info("interrupted..");
    }

    for (final PeakCluster peakCluster : resultClusters) {
        //Check if the monoistope peak of cluster has been grouped in other isotope cluster, if yes, remove the peak cluster
        if (!parameter.RemoveGroupedPeaks ||
        //                    !peakCluster.MonoIsotopePeak.ChargeGrouped.contains(peakCluster.Charge)
                !IonChargeHashSet.contains(peakCluster.MonoIsotopePeak.ChargeGrouped, peakCluster.Charge)) {
            peakCluster.Index = LCMSPeakBase.PeakClusters.size() + 1;
            peakCluster.GetConflictCorr();
            LCMSPeakBase.PeakClusters.add(peakCluster);
        }
    }

    System.gc();
    Logger.getRootLogger()
            .info("No of ion clusters:" + LCMSPeakBase.PeakClusters.size() + " (Memory usage:"
                    + Math.round(
                            (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576)
                    + "MB)");
}

From source file:com.kyleshaver.minuteofangle.util.IabHelper.java

int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
            throws RemoteException, JSONException {
        logDebug("Querying SKU details.");
        ArrayList<String> skuList = new ArrayList<String>();
        skuList.addAll(inv.getAllOwnedSkus(itemType));
        if (moreSkus != null) {
            for (String sku : moreSkus) {
                if (!skuList.contains(sku)) {
                    skuList.add(sku);/* w  w  w.  j a  va  2 s .com*/
                }
            }
        }

        if (skuList.size() == 0) {
            logDebug("queryPrices: nothing to do because there are no SKUs.");
            return BILLING_RESPONSE_RESULT_OK;
        }

        // Split the sku list in blocks of no more than 20 elements.
        ArrayList<ArrayList<String>> packs = new ArrayList<ArrayList<String>>();
        ArrayList<String> tempList;
        int n = skuList.size() / 20;
        int mod = skuList.size() % 20;
        for (int i = 0; i < n; i++) {
            tempList = new ArrayList<String>();
            for (String s : skuList.subList(i * 20, i * 20 + 20)) {
                tempList.add(s);
            }
            packs.add(tempList);
        }
        if (mod != 0) {
            tempList = new ArrayList<String>();
            for (String s : skuList.subList(n * 20, n * 20 + mod)) {
                tempList.add(s);
            }
            packs.add(tempList);
        }

        for (ArrayList<String> skuPartList : packs) {
            Bundle querySkus = new Bundle();
            querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuPartList);
            Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus);

            if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
                int response = getResponseCodeFromBundle(skuDetails);
                if (response != BILLING_RESPONSE_RESULT_OK) {
                    logDebug("getSkuDetails() failed: " + getResponseDesc(response));
                    return response;
                } else {
                    logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
                    return IABHELPER_BAD_RESPONSE;
                }
            }

            ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);

            for (String thisResponse : responseList) {
                SkuDetails d = new SkuDetails(itemType, thisResponse);
                logDebug("Got sku details: " + d);
                inv.addSkuDetails(d);
            }
        }

        return BILLING_RESPONSE_RESULT_OK;
    }

From source file:me.lizheng.deckview.views.DeckView.java

/**
 * Gets the stack transforms of a list of tasks, and returns the visible range of tasks.
 *//*  www .  j a  v  a2s  .  c  o m*/
private boolean updateStackTransforms(ArrayList<DeckChildViewTransform> taskTransforms, ArrayList<T> data,
        float stackScroll, int[] visibleRangeOut, boolean boundTranslationsToRect) {
    int taskTransformCount = taskTransforms.size();
    int taskCount = data.size();
    int frontMostVisibleIndex = -1;
    int backMostVisibleIndex = -1;

    // We can reuse the task transforms where possible to reduce object allocation
    if (taskTransformCount < taskCount) {
        // If there are less transforms than tasks, then add as many transforms as necessary
        for (int i = taskTransformCount; i < taskCount; i++) {
            taskTransforms.add(new DeckChildViewTransform());
        }
    } else if (taskTransformCount > taskCount) {
        // If there are more transforms than tasks, then just subset the transform list
        taskTransforms.subList(0, taskCount);
    }

    // Update the stack transforms
    DeckChildViewTransform prevTransform = null;
    for (int i = taskCount - 1; i >= 0; i--) {
        DeckChildViewTransform transform = mLayoutAlgorithm.getStackTransform(data.get(i), stackScroll,
                taskTransforms.get(i), prevTransform);
        if (transform.visible) {
            if (frontMostVisibleIndex < 0) {
                frontMostVisibleIndex = i;
            }
            backMostVisibleIndex = i;
        } else {
            if (backMostVisibleIndex != -1) {
                // We've reached the end of the visible range, so going down the rest of the
                // stack, we can just reset the transforms accordingly
                while (i >= 0) {
                    taskTransforms.get(i).reset();
                    i--;
                }
                break;
            }
        }

        if (boundTranslationsToRect) {
            transform.translationY = Math.min(transform.translationY, mLayoutAlgorithm.mViewRect.bottom);
        }
        prevTransform = transform;
    }
    if (visibleRangeOut != null) {
        visibleRangeOut[0] = frontMostVisibleIndex;
        visibleRangeOut[1] = backMostVisibleIndex;
    }
    return frontMostVisibleIndex != -1 && backMostVisibleIndex != -1;
}

From source file:org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy.java

private StripeCompactionRequest selectExpiredMergeCompaction(StripeInformationProvider si,
        boolean canDropDeletesNoL0) {
    long cfTtl = this.storeConfigInfo.getStoreFileTtl();
    if (cfTtl == Long.MAX_VALUE) {
        return null; // minversion might be set, cannot delete old files
    }/*from ww  w .  j  a v  a  2  s.co  m*/
    long timestampCutoff = EnvironmentEdgeManager.currentTimeMillis() - cfTtl;
    // Merge the longest sequence of stripes where all files have expired, if any.
    int start = -1, bestStart = -1, length = 0, bestLength = 0;
    ArrayList<ImmutableList<StoreFile>> stripes = si.getStripes();
    OUTER: for (int i = 0; i < stripes.size(); ++i) {
        for (StoreFile storeFile : stripes.get(i)) {
            if (storeFile.getReader().getMaxTimestamp() < timestampCutoff)
                continue;
            // Found non-expired file, this stripe has to stay.
            if (length > bestLength) {
                bestStart = start;
                bestLength = length;
            }
            start = -1;
            length = 0;
            continue OUTER;
        }
        if (start == -1) {
            start = i;
        }
        ++length;
    }
    if (length > bestLength) {
        bestStart = start;
        bestLength = length;
    }
    if (bestLength == 0)
        return null;
    if (bestLength == 1) {
        // This is currently inefficient. If only one stripe expired, we will rewrite some
        // entire stripe just to delete some expired files because we rely on metadata and it
        // cannot simply be updated in an old file. When we either determine stripe dynamically
        // or move metadata to manifest, we can just drop the "expired stripes".
        if (bestStart == (stripes.size() - 1))
            return null;
        ++bestLength;
    }
    LOG.debug("Merging " + bestLength + " stripes to delete expired store files");
    int endIndex = bestStart + bestLength - 1;
    ConcatenatedLists<StoreFile> sfs = new ConcatenatedLists<StoreFile>();
    sfs.addAllSublists(stripes.subList(bestStart, endIndex + 1));
    SplitStripeCompactionRequest result = new SplitStripeCompactionRequest(sfs, si.getStartRow(bestStart),
            si.getEndRow(endIndex), 1, Long.MAX_VALUE);
    if (canDropDeletesNoL0) {
        result.setMajorRangeFull();
    }
    return result;
}