Example usage for java.util TreeSet subSet

List of usage examples for java.util TreeSet subSet

Introduction

In this page you can find the example usage for java.util TreeSet subSet.

Prototype

public SortedSet<E> subSet(E fromElement, E toElement) 

Source Link

Usage

From source file:Main.java

public static void main(String args[]) throws Exception {

    String elements[] = { "A", "C", "D", "G", "F" };
    TreeSet<String> set = new TreeSet<String>(Arrays.asList(elements));

    System.out.println(set.subSet("C", "F"));
}

From source file:Main.java

public static void main(String[] args) {
    TreeSet<String> tSet = new TreeSet<String>();

    tSet.add("1");
    tSet.add("2");
    tSet.add("3");
    tSet.add("4");
    tSet.add("5");

    SortedSet sortedSet = tSet.subSet("2", "5");

    System.out.println("SortedSet Contains : " + sortedSet);
}

From source file:MainClass.java

public static void main(String args[]) throws Exception {

    String elements[] = { "A", "C", "D", "G", "F" };
    TreeSet set = new TreeSet(Arrays.asList(elements));

    System.out.println(set.tailSet("C"));
    System.out.println(set.headSet("C"));
    System.out.println(set.headSet("C\0"));
    System.out.println(set.tailSet("C\0"));
    System.out.println(set.subSet("C", "F\0"));
    System.out.println(set.subSet("C", "C\0"));
    System.out.println(set.subSet("C", "C"));
}

From source file:Main.java

public static void main(String[] args) {

    TreeSet<Integer> treeadd = new TreeSet<Integer>();

    treeadd.add(1);//from ww  w .j  a v a  2 s  . c  o  m
    treeadd.add(2);
    treeadd.add(3);
    treeadd.add(4);
    treeadd.add(5);
    treeadd.add(6);
    treeadd.add(7);
    treeadd.add(8);

    TreeSet<Integer> treesubset = (TreeSet<Integer>) treeadd.subSet(3, 7);

    Iterator<Integer> iterator = treesubset.iterator();

    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}

From source file:com.repeatability.pdf.PDFTextStripper.java

/**
 * This will process a TextPosition object and add the text to the list of characters on a page. It takes care of
 * overlapping text.//from w  w  w .  ja va2s  . c  o m
 *
 * @param text The text to process.
 */
@Override
protected void processTextPosition(TextPosition text) {
    boolean showCharacter = true;
    if (suppressDuplicateOverlappingText) {
        showCharacter = false;
        String textCharacter = text.getUnicode();
        float textX = text.getX();
        float textY = text.getY();
        TreeMap<Float, TreeSet<Float>> sameTextCharacters = characterListMapping.get(textCharacter);
        if (sameTextCharacters == null) {
            sameTextCharacters = new TreeMap<Float, TreeSet<Float>>();
            characterListMapping.put(textCharacter, sameTextCharacters);
        }
        // RDD - Here we compute the value that represents the end of the rendered
        // text. This value is used to determine whether subsequent text rendered
        // on the same line overwrites the current text.
        //
        // We subtract any positive padding to handle cases where extreme amounts
        // of padding are applied, then backed off (not sure why this is done, but there
        // are cases where the padding is on the order of 10x the character width, and
        // the TJ just backs up to compensate after each character). Also, we subtract
        // an amount to allow for kerning (a percentage of the width of the last
        // character).
        boolean suppressCharacter = false;
        float tolerance = text.getWidth() / textCharacter.length() / 3.0f;

        SortedMap<Float, TreeSet<Float>> xMatches = sameTextCharacters.subMap(textX - tolerance,
                textX + tolerance);
        for (TreeSet<Float> xMatch : xMatches.values()) {
            SortedSet<Float> yMatches = xMatch.subSet(textY - tolerance, textY + tolerance);
            if (!yMatches.isEmpty()) {
                suppressCharacter = true;
                break;
            }
        }
        if (!suppressCharacter) {
            TreeSet<Float> ySet = sameTextCharacters.get(textX);
            if (ySet == null) {
                ySet = new TreeSet<Float>();
                sameTextCharacters.put(textX, ySet);
            }
            ySet.add(textY);
            showCharacter = true;
        }
    }
    if (showCharacter) {
        // if we are showing the character then we need to determine which article it belongs to
        int foundArticleDivisionIndex = -1;
        int notFoundButFirstLeftAndAboveArticleDivisionIndex = -1;
        int notFoundButFirstLeftArticleDivisionIndex = -1;
        int notFoundButFirstAboveArticleDivisionIndex = -1;
        float x = text.getX();
        float y = text.getY();
        if (shouldSeparateByBeads) {
            for (int i = 0; i < beadRectangles.size() && foundArticleDivisionIndex == -1; i++) {
                PDRectangle rect = beadRectangles.get(i);
                if (rect != null) {
                    if (rect.contains(x, y)) {
                        foundArticleDivisionIndex = i * 2 + 1;
                    } else if ((x < rect.getLowerLeftX() || y < rect.getUpperRightY())
                            && notFoundButFirstLeftAndAboveArticleDivisionIndex == -1) {
                        notFoundButFirstLeftAndAboveArticleDivisionIndex = i * 2;
                    } else if (x < rect.getLowerLeftX() && notFoundButFirstLeftArticleDivisionIndex == -1) {
                        notFoundButFirstLeftArticleDivisionIndex = i * 2;
                    } else if (y < rect.getUpperRightY() && notFoundButFirstAboveArticleDivisionIndex == -1) {
                        notFoundButFirstAboveArticleDivisionIndex = i * 2;
                    }
                } else {
                    foundArticleDivisionIndex = 0;
                }
            }
        } else {
            foundArticleDivisionIndex = 0;
        }
        int articleDivisionIndex;
        if (foundArticleDivisionIndex != -1) {
            articleDivisionIndex = foundArticleDivisionIndex;
        } else if (notFoundButFirstLeftAndAboveArticleDivisionIndex != -1) {
            articleDivisionIndex = notFoundButFirstLeftAndAboveArticleDivisionIndex;
        } else if (notFoundButFirstLeftArticleDivisionIndex != -1) {
            articleDivisionIndex = notFoundButFirstLeftArticleDivisionIndex;
        } else if (notFoundButFirstAboveArticleDivisionIndex != -1) {
            articleDivisionIndex = notFoundButFirstAboveArticleDivisionIndex;
        } else {
            articleDivisionIndex = charactersByArticle.size() - 1;
        }

        List<TextPosition> textList = charactersByArticle.get(articleDivisionIndex);

        // In the wild, some PDF encoded documents put diacritics (accents on
        // top of characters) into a separate Tj element. When displaying them
        // graphically, the two chunks get overlayed. With text output though,
        // we need to do the overlay. This code recombines the diacritic with
        // its associated character if the two are consecutive.
        if (textList.isEmpty()) {
            textList.add(text);
        } else {
            // test if we overlap the previous entry.
            // Note that we are making an assumption that we need to only look back
            // one TextPosition to find what we are overlapping.
            // This may not always be true. */
            TextPosition previousTextPosition = textList.get(textList.size() - 1);
            if (text.isDiacritic() && previousTextPosition.contains(text)) {
                previousTextPosition.mergeDiacritic(text);
            }
            // If the previous TextPosition was the diacritic, merge it into this
            // one and remove it from the list.
            else if (previousTextPosition.isDiacritic() && text.contains(previousTextPosition)) {
                text.mergeDiacritic(previousTextPosition);
                textList.remove(textList.size() - 1);
                textList.add(text);
            } else {
                textList.add(text);
            }
        }
    }
}

From source file:net.spfbl.core.User.java

public static void sendHoldingWarning() {
    for (User user : getSet()) {
        if (user.isUsingHeader()) {
            HashSet<String> keySet = new HashSet<String>();
            TreeSet<Long> timeSet = user.getTimeSet();
            long deferTimeYELLOW = Core.getDeferTimeYELLOW() * 60000L;
            long deferTimeRED = Core.getDeferTimeRED() * 60000L;
            long deferTimeHOLD = Core.getDeferTimeHOLD() * 60000L;
            long timeEnd = System.currentTimeMillis() - deferTimeYELLOW;
            long timeMiddle = System.currentTimeMillis() - deferTimeRED;
            long timeBegin = System.currentTimeMillis() - deferTimeHOLD;
            int count = 0;
            for (long time : timeSet.subSet(timeBegin, timeEnd)) {
                Query query = user.getQuery(time);
                if (query != null && query.hasSubject() && query.isNotAdvisedLocal() && query.isResult("HOLD")
                        && keySet.add(query.getComplainKey())) {
                    if (query.isHoldingFull()) {
                        if (query.adviseSenderHOLD(time)) {
                            CHANGED = true;
                            Server.logDebug("retention warning sent by e-mail.");
                        } else if (!query.isSenderAdvised() && !query.isPass() && query.adviseAdminHOLD(time)) {
                            CHANGED = true;
                            Server.logDebug("retention warning sent by e-mail.");
                        } else if (!query.isSenderAdvised() && query.adviseRecipientHOLD(time)) {
                            CHANGED = true;
                            Server.logDebug("retention warning sent by e-mail.");
                        } else if (time < timeMiddle && !query.isPass() && query.adviseAdminHOLD(time)) {
                            CHANGED = true;
                            Server.logDebug("retention warning sent by e-mail.");
                        } else if (time < timeMiddle && query.adviseRecipientHOLD(time)) {
                            CHANGED = true;
                            Server.logDebug("retention warning sent by e-mail.");
                        } else if (time < timeMiddle && query.adviseAdminHOLD(time)) {
                            CHANGED = true;
                            Server.logDebug("retention warning sent by e-mail.");
                        }//from ww  w.java2s .c o m
                    }
                    if (++count > 1024) {
                        break;
                    }
                }
            }
        }
    }
}

From source file:net.spfbl.core.User.java

public static void sendSuspectWarning() {
    for (User user : getSet()) {
        if (user.isUsingHeader()) {
            HashSet<String> keySet = new HashSet<String>();
            TreeSet<Long> timeSet = user.getTimeSet();
            long deferTimeYELLOW = Core.getDeferTimeYELLOW() * 60000L;
            long deferTimeRED = Core.getDeferTimeRED() * 60000L;
            long timeEnd = System.currentTimeMillis() - deferTimeYELLOW;
            long timeBegin = System.currentTimeMillis() - deferTimeRED;
            int count = 0;
            for (long time : timeSet.subSet(timeBegin, timeEnd)) {
                Query query = user.getQuery(time);
                if (query != null && query.hasSubject() && query.hasMessageID() && query.isNotAdvised()
                        && query.isResult("ACCEPT") && keySet.add(query.getComplainKey())
                        && query.isSuspectFull()) {
                    if (query.adviseRecipientSPAM(time)) {
                        CHANGED = true;/*from  www. j  a va2s .c om*/
                        Server.logDebug("suspect warning sent by e-mail.");
                    }
                    if (++count > 1024) {
                        break;
                    }
                }
            }
        }
    }
}