Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   What is the best way to search for a set of values within a multi-dimenstional array? (http://www.velocityreviews.com/forums/t134278-what-is-the-best-way-to-search-for-a-set-of-values-within-a-multi-dimenstional-array.html)

 Bill 06-10-2004 04:04 PM

What is the best way to search for a set of values within a multi-dimenstional array?

suppose I have a table with 3 columns: A, B, C, and has the following
values:

A B C
1 2 3
4 5 6
7 8 9

I want to know what is the best way to find whether there is a row in
a table that contains 3 different values regardless of the orders they
are entered. For example, if I enter the search values (5,6,4) or
(4,5,6) or (4,6,5), or (5,4,6), the search should return true (row 2).

Any suggestions?

 Andy Fish 06-10-2004 04:56 PM

Re: What is the best way to search for a set of values within a multi-dimenstional array?

"Bill" <webobjectfan@yahoo.com> wrote in message
> suppose I have a table with 3 columns: A, B, C, and has the following
> values:
>
> A B C
> 1 2 3
> 4 5 6
> 7 8 9
>
> I want to know what is the best way to find whether there is a row in
> a table that contains 3 different values regardless of the orders they
> are entered. For example, if I enter the search values (5,6,4) or
> (4,5,6) or (4,6,5), or (5,4,6), the search should return true (row 2).
>
> Any suggestions?

keep a sorted copy of each row, then you can sort the input criteria and
match it up against each row by checking for equality

If you keep the values as Integer objects rather than primitive 'int's, you
can have an ArrayList for each row, then use collections.sort to sort each
individual row. Keep them all in a hashset then you can use the contains()
method to see if you have a match.

not very efficient in memory use, but saves you writing your own sort and
search logic.

Andy

 Jean Charbonneau 06-10-2004 05:11 PM

Re: What is the best way to search for a set of values within a multi-dimenstional array?

"Bill" <webobjectfan@yahoo.com> wrote in message
> suppose I have a table with 3 columns: A, B, C, and has the following
> values:
>
> A B C
> 1 2 3
> 4 5 6
> 7 8 9
>
> I want to know what is the best way to find whether there is a row in
> a table that contains 3 different values regardless of the orders they
> are entered. For example, if I enter the search values (5,6,4) or
> (4,5,6) or (4,6,5), or (5,4,6), the search should return true (row 2).
>
> Any suggestions?

I'd loop on first column and check if there is a corresponding value, then
keep all the rows which contained one, and repeat same operation with second
row, etc.. Use a quicksort for the search ( by doing a temporary array )

Sounds good to me. Could be wrong :) Just giving ideas in case you need
some.

 Bill 06-18-2004 01:52 PM

Re: What is the best way to search for a set of values within a multi-dimenstional array?

Andy:

It works perfectly. Thanks.

Bill

"Andy Fish" <ajfish@blueyonder.co.uk> wrote in message news:<Po0yc.855\$7G3.7426187@news-text.cableinet.net>...
> "Bill" <webobjectfan@yahoo.com> wrote in message
> > suppose I have a table with 3 columns: A, B, C, and has the following
> > values:
> >
> > A B C
> > 1 2 3
> > 4 5 6
> > 7 8 9
> >
> > I want to know what is the best way to find whether there is a row in
> > a table that contains 3 different values regardless of the orders they
> > are entered. For example, if I enter the search values (5,6,4) or
> > (4,5,6) or (4,6,5), or (5,4,6), the search should return true (row 2).
> >
> > Any suggestions?

>
> keep a sorted copy of each row, then you can sort the input criteria and
> match it up against each row by checking for equality
>
> If you keep the values as Integer objects rather than primitive 'int's, you
> can have an ArrayList for each row, then use collections.sort to sort each
> individual row. Keep them all in a hashset then you can use the contains()
> method to see if you have a match.
>
> not very efficient in memory use, but saves you writing your own sort and
> search logic.
>
> Andy

 All times are GMT. The time now is 11:04 PM.