Wrapper for arrays of ordered strings. This verifies the arrays and supports efficient lookups. : String search « Data Type « Java

Java
1. 2D Graphics GUI
2. 3D
3. Advanced Graphics
4. Ant
5. Apache Common
6. Chart
7. Class
8. Collections Data Structure
9. Data Type
10. Database SQL JDBC
11. Design Pattern
12. Development Class
13. EJB3
14. Email
15. Event
16. File Input Output
17. Game
18. Generics
19. GWT
20. Hibernate
21. I18N
22. J2EE
23. J2ME
24. JDK 6
25. JNDI LDAP
26. JPA
27. JSP
28. JSTL
29. Language Basics
30. Network Protocol
31. PDF RTF
32. Reflection
33. Regular Expressions
34. Scripting
35. Security
36. Servlets
37. Spring
38. Swing Components
39. Swing JFC
40. SWT JFace Eclipse
41. Threads
42. Tiny Application
43. Velocity
44. Web Services SOA
45. XML
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java » Data Type » String searchScreenshots 
Wrapper for arrays of ordered strings. This verifies the arrays and supports efficient lookups.
      


/**
 * Wrapper for arrays of ordered strings. This verifies the arrays and supports
 * efficient lookups.
 
 @author Dennis M. Sosnoski
 */
public class StringArray
{
    /** Ordered array of strings. */
    private final String[] m_list;
    
    /**
     * Constructor from array of values. This checks the array values to make
     * sure they're ordered and unique, and if they're not throws an exception.
     * Once the array has been passed to this constructor it must not be
     * modified by outside code.
     
     @param list array of values
     */
    public StringArray(String[] list) {
        validateArray(list);
        m_list = list;
    }

    /**
     * Constructor from array of values to be added to base instance. This
     * merges the array values, making sure they're ordered and unique, and if
     * they're not throws an exception.
     
     @param list array of values
     @param base base instance
     */
    public StringArray(String[] list, StringArray base) {
        validateArray(list);
        m_list = mergeArrays(list, base.m_list);
    }

    /**
     * Constructor from pair of base instances. This merges the values, making
     * sure they're unique, and if they're not throws an exception.
     
     @param array1 first base array
     @param array2 second base array
     */
    public StringArray(StringArray array1, StringArray array2) {
        m_list = mergeArrays(array1.m_list, array2.m_list);
    }

    /**
     * Constructor from array of values to be added to pair of base instances.
     * This merges the array values, making sure they're ordered and unique, and
     * if they're not throws an exception.
     
     @param list array of values
     @param array1 first base array
     @param array2 second base array
     */
    public StringArray(String[] list, StringArray array1, StringArray array2) {
        validateArray(list);
        m_list = mergeArrays(list, mergeArrays(array1.m_list, array2.m_list));
    }

    /**
     * Constructor from array of values to be added to three base instances.
     * This merges the array values, making sure they're ordered and unique, and
     * if they're not throws an exception.
     
     @param list array of values
     @param array1 first base array
     @param array2 second base array
     @param array3 third base array
     */
    public StringArray(String[] list, StringArray array1, StringArray array2,
        StringArray array3) {
        validateArray(list);
        m_list = mergeArrays(list, mergeArrays(array1.m_list,
            mergeArrays(array2.m_list, array3.m_list)));
    }

    /**
     * Constructor from array of values to be added to four base instances.
     * This merges the array values, making sure they're ordered and unique, and
     * if they're not throws an exception.
     
     @param list array of values
     @param array1 first base array
     @param array2 second base array
     @param array3 third base array
     @param array4 fourth base array
     */
    public StringArray(String[] list, StringArray array1, StringArray array2,
        StringArray array3, StringArray array4) {
        validateArray(list);
        m_list = mergeArrays(list, mergeArrays(array1.m_list,
            mergeArrays(array2.m_list,
            mergeArrays(array3.m_list, array4.m_list))));
    }
    
    /**
     * Merge a pair of ordered arrays into a single array. The two source arrays
     * must not contain any values in common.
     
     @param list1 first ordered array
     @param list2 second ordered array
     @return merged array
     */
    private String[] mergeArrays(String[] list1, String[] list2) {
        String[] merge = new String[list1.length + list2.length];
        int fill = 0;
        int i = 0;
        int j = 0;
        while (i < list1.length && j < list2.length) {
            int diff = list2[j].compareTo(list1[i]);
            if (diff > 0) {
                merge[fill++= list1[i++];
            else if (diff < 0) {
                merge[fill++= list2[j++];
            else {
                throw new IllegalArgumentException
                    ("Repeated value not allowed: \"" + list1[i'"');
            }
        }
        if (i < list1.length) {
            System.arraycopy(list1, i, merge, fill, list1.length-i);
        }
        if (j < list2.length) {
            System.arraycopy(list2, j, merge, fill, list2.length-j);
        }
        return merge;
    }

    /**
     * Make sure passed-in array contains values that are in order and without
     * duplicate values.
     
     @param list
     */
    private void validateArray(String[] list) {
        if (list.length > 0) {
            String last = list[0];
            int index = 0;
            while (++index < list.length) {
                String comp = list[index];
                int diff = last.compareTo(comp);
                if (diff > 0) {
                    throw new IllegalArgumentException
                        ("Array values are not ordered");
                else if (diff < 0) {
                    last = comp;
                else {
                    throw new IllegalArgumentException
                        ("Duplicate values in array");
                }
            }
        }
    }
    
    /**
     * Get string at a particular index in the list.
     *
     @param index list index to be returned
     @return string at that index position
     */
    public String get(int index) {
        return m_list[index];
    }
    
    /**
     * Find index of a particular string in the array. This does
     * a binary search through the array values, using a pair of
     * index bounds to track the subarray of possible matches at
     * each iteration.
     *
     @param value string to be found in list
     @return index of string in array, or <code>-1</code> if
     * not present
     */
    public int indexOf(String value) {
        int base = 0;
        int limit = m_list.length - 1;
        while (base <= limit) {
            int cur = (base + limit>> 1;
            int diff = value.compareTo(m_list[cur]);
            if (diff < 0) {
                limit = cur - 1;
            else if (diff > 0) {
                base = cur + 1;
            else {
                return cur;
            }
        }
        return -1;
    }
    
    /**
     * Get number of values in array
     *
     @return number of values in array
     */
    public int size() {
        return m_list.length;
    }
}

   
    
    
    
    
    
  
Related examples in the same category
1. String Region Match DemoString Region Match Demo
2. PalindromePalindrome
3. Look for particular sequences in sentencesLook for particular sequences in sentences
4. Strings -- extract printable strings from binary file
5. Java Search String
6. Java String endsWith
7. Java String startsWith
8. Search a substring Anywhere
9. Starts with, ignore case( regular expressions )
10. Ends with, ignore case( regular expressions )
11. Anywhere, ignore case( regular expressions )
12. Searching a String for a Character or a Substring
13. Not found returns -1
14. If a string contains a specific word
15. Not found
16. if a String starts with a digit or uppercase letter
17. Search a String to find the first index of any character in the given set of characters.
18. Search a String to find the first index of any character not in the given set of characters.
19. Searches a String for substrings delimited by a start and end tag, returning all matching substrings in an array.
20. Helper functions to query a strings end portion. The comparison is case insensitive.
21. Helper functions to query a strings start portion. The comparison is case insensitive.
22. Returns an index into arra (or -1) where the character is not in the charset byte array.
23. Returns an int[] array of length segments containing the distribution count of the elements in unsorted int[] array with values between min and max (range).
24. Returns the next index of a character from the chars string
25. Finds the first index within a String, handling null.
26. Finds the last index within a String from a start position, handling null.
27. Finds the n-th index within a String, handling null.
28. Case insensitive check if a String ends with a specified suffix.
29. Case insensitive check if a String starts with a specified prefix.
30. Case insensitive removal of a substring if it is at the begining of a source string, otherwise returns the source string.
31. Case insensitive removal of a substring if it is at the end of a source string, otherwise returns the source string.
32. Check if a String ends with a specified suffix.
33. Check if a String starts with a specified prefix.
34. Determine if a String is contained in a String Collection
35. Determine if a String is contained in a String Collection, ignoring case
36. Determine if a String is contained in a String [], ignoring case
37. Determine if a String is contained in a String [], ignoring case or not as specified
38. Determine if a String is contained in a String[]
39. Determines if the specified string contains only Unicode letters or digits as defined by Character#isLetterOrDigit(char)
40. Determining the validity of various XML names
41. Return the nth index of the given token occurring in the given string
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.