944,082 Members | Top Members by Rank

Ad:
  • Java Discussion Thread
  • Unsolved
  • Views: 3303
  • Java RSS
Mar 21st, 2005
0

Question about indexing objects

Expand Post »
Hello everyone,


I want to use indexing technology to speed up searching operation of my application. I have found that Java built-in type Hashtable can only have one key for each object. But my requirement is that an object can have multiple keys for an object. For example, the objects may be arranged in the following model,

Object (key1, key2, value)

and the related instances maybe

John ("male", "single", <personal information of John>)
Smith ("male", "married", <personal information of Smith>)

When given key1 (or key2, or key1 and key2 altogether), I want to find out matched objects. For example, when given "male", John and Smith are both matched. When given "single", only John is matched. When given "female" and "single", no records are matched.


Thanks in advance,
George
Similar Threads
Reputation Points: 11
Solved Threads: 0
Junior Poster
George2 is offline Offline
189 posts
since Nov 2004
Mar 22nd, 2005
0

Re: Question about indexing objects

Quote originally posted by George2 ...
Hello everyone,


I want to use indexing technology to speed up searching operation of my application. I have found that Java built-in type Hashtable can only have one key for each object. But my requirement is that an object can have multiple keys for an object. For example, the objects may be arranged in the following model,

Object (key1, key2, value)

and the related instances maybe

John ("male", "single", <personal information of John>)
Smith ("male", "married", <personal information of Smith>)

When given key1 (or key2, or key1 and key2 altogether), I want to find out matched objects. For example, when given "male", John and Smith are both matched. When given "single", only John is matched. When given "female" and "single", no records are matched.


Thanks in advance,
George
Yeah Java does not provide MultiKey Map kind of a thing. So you are left with 2 choices. Use some third party class (jakarta collections package has what you are looking for) or implement your own. You can do this by extending the HashMap class or simply defining a custom "equals" function for your "key" class instead of using default String class for key.

cheers,
aj.wh.ca
Reputation Points: 12
Solved Threads: 1
Junior Poster in Training
aj.wh.ca is offline Offline
53 posts
since Mar 2005
Mar 22nd, 2005
0

Re: Question about indexing objects

Thanks aj.wh.ca,


Quote originally posted by aj.wh.ca ...
Yeah Java does not provide MultiKey Map kind of a thing. So you are left with 2 choices. Use some third party class (jakarta collections package has what you are looking for) or implement your own. You can do this by extending the HashMap class or simply defining a custom "equals" function for your "key" class instead of using default String class for key.

cheers,
aj.wh.ca
Your ideas are great! I am very interested in the extending HashMap class solution in your reply. Could you provide more information to this solution? Especially how to define "key" class and "equal" function to be flexible to be reusable in other applications.

Another question is, what class of jakarta Collection should I use to meet my requirements? I have studied the document of jakarta Collection but can not find a suitable one. Could you help?


regards,
George
Reputation Points: 11
Solved Threads: 0
Junior Poster
George2 is offline Offline
189 posts
since Nov 2004
Mar 22nd, 2005
0

Re: Question about indexing objects

Quote originally posted by George2 ...
Thanks aj.wh.ca,




Your ideas are great! I am very interested in the extending HashMap class solution in your reply. Could you provide more information to this solution? Especially how to define "key" class and "equal" function to be flexible to be reusable in other applications.

Another question is, what class of jakarta Collection should I use to meet my requirements? I have studied the document of jakarta Collection but can not find a suitable one. Could you help?


regards,
George
Thanks George.

For the 3rd party API consider following link.
http://jakarta.apache.org/commons/co.../MultiMap.html

A simpler solution would be as I said earlier to make a new class.

e.g.

public class MyKey // you may want to extend an existing class say String
{
String[] keys ;
MyKey(String[] k){....}
public boolean equals(MyKey k){//simply compare the keys here as per your conditions}
}

Now in the hashmap for key,value pair insert object of MyKey and the associated value.
This may not be best in performance but this is clean and simple.

regards,
aj.wh.ca
Reputation Points: 12
Solved Threads: 1
Junior Poster in Training
aj.wh.ca is offline Offline
53 posts
since Mar 2005
Mar 23rd, 2005
0

Re: Question about indexing objects

Thanks aj.wh.ca,


Quote originally posted by aj.wh.ca ...
Thanks George.

For the 3rd party API consider following link.
http://jakarta.apache.org/commons/co.../MultiMap.html

A simpler solution would be as I said earlier to make a new class.

e.g.

public class MyKey // you may want to extend an existing class say String
{
String[] keys ;
MyKey(String[] k){....}
public boolean equals(MyKey k){//simply compare the keys here as per your conditions}
}

Now in the hashmap for key,value pair insert object of MyKey and the associated value.
This may not be best in performance but this is clean and simple.

regards,
aj.wh.ca
You are too kind and too great!


regards,
George
Reputation Points: 11
Solved Threads: 0
Junior Poster
George2 is offline Offline
189 posts
since Nov 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Java Forum Timeline: Simple problem with encryption
Next Thread in Java Forum Timeline: JMenu ...Can't remember





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC