Solved

Need a container to hold a unique list of strings with a fast lookup

Posted on 2004-07-31
5
215 Views
Last Modified: 2012-05-05
Hi,

I need to maintain a list of unique strings. What container should I use? I need the following requirements:

1) check to see if the string exists in the container (note that it could be a different String object with the same text)
2) must be fast. I mean I don't want the container to be looping through each element doing an equals() call for each element

So I'm thinking it should be some kind of container where the Strings are added in sorted order. This way any kind of equals call can use a divide and conquer approach to testing or something similar.

Are there any containers like this? Whether inside the JDK or freely available somewhere?

Or does anyone have any suggestions the best way to build one?
0
Comment
Question by:ycomp
  • 3
  • 2
5 Comments
 
LVL 7

Accepted Solution

by:
lhankins earned 500 total points
ID: 11686237
You can do this with one of the java.util.Set implementations (either HashSet or TreeSet).

Both implementations are fast with respect to lookup time.   If you want to maintain the items in sorted order (e.g. you want to print them out in sorted order), then use the TreeSet.   Otherwise, use the HashSet.

Example usage :

      Set items = new HashSet();

      items.add("foo");
      items.add("bar");
      items.add("wubba");
      // etc...
     
      if (items.contains("somestring"))
      {
         // item is in the set...
      }


0
 
LVL 7

Expert Comment

by:lhankins
ID: 11686241
BTW - all of the classes listed above are part of the standard JDK (they are in the java.util package).
0
 

Author Comment

by:ycomp
ID: 11686246
ah, so HashSet does use equals() or something to test? I tried it in my code but it didn't work. I guess I was calling it wrong.
0
 

Author Comment

by:ycomp
ID: 11686247
I forgot about hashcodes. It's been a long day.
0
 

Author Comment

by:ycomp
ID: 11686256
yeah was my faulty code that caused the problem
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Application launch issue with Apache Tomcat 5 42
How to get all the API from website? 11 86
topping2 challenge 13 90
Adding multiple JVM environments to RedHat 6 7 18
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

774 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question