PDA

Click to See Complete Forum and Search --> : String comparisons


x-ice
Oct 27th, 2005, 04:27 PM
I have a string that i want to insert into an unsorted list in the correct place alphabetically. Here is what i mean... The list:

Peter (1)
George (2)
Mike (3)
Bill (4)
Jason (5)
Carl (6)
Alex (7)

If i wanted to insert the string 'Dan' (String X) into this list the logical answer would be to compare the strings in the list. This is how i would do it.

Compare string 1 and 2.
String 1 is more than (alphabetically) string 2, so continue
Compare string 2 and 3
String 2 is less than (alphabetically) string 3, so
Compare string 2 and string X
String X is less than (alphabetically) string 2, so continue
Compare string 3 and 4
String 3 is more than (alphabetically) string 4, so continue
Compare string 4 and 5
String 4 is less than (alphabetically) string 5, so
Compare string 4 and string X
String X is more than (alphabetically) string 4, so
Move string 5,6,7 to element 6,7,8 in list, leaving element 5 blank
Insert string X into element 5 (blank space)

My question is how would i compare the strings?

System_Error
Oct 27th, 2005, 06:29 PM
Compare Strings using .equals().

For instance, I'm assuming you mean an arraylist:

ArrayList al = new ArrayList();
//what's in it
Peter (1)
George (2)
Mike (3)
Bill (4)
Jason (5)
Carl (6)
Alex (7)


Then you would do something like the following:

if (al.get(1).toString().equals(al.get(2).toString()))
{
element 1 equals element 2;
}


If it's just a regular array, then replace .get(i) with [i].
Let me know if you don't understand.

System_Error
Oct 27th, 2005, 06:30 PM
Oh, the reason you call toString() is because arraylist hands back objects.

x-ice
Oct 28th, 2005, 05:01 AM
Compare Strings using .equals().

For instance, I'm assuming you mean an arraylist:

ArrayList al = new ArrayList();
//what's in it
Peter (1)
George (2)
Mike (3)
Bill (4)
Jason (5)
Carl (6)
Alex (7)


Then you would do something like the following:

if (al.get(1).toString().equals(al.get(2).toString()))
{
element 1 equals element 2;
}


If it's just a regular array, then replace .get(i) with [i].
Let me know if you don't understand.How can i establish alphbetical position using this? How can i establish the George would come before Peter alphabetically?

CornedBee
Oct 28th, 2005, 05:15 AM
There is no correct position in an unsorted list. (Unless by unsorted list you mean a list that doesn't sort itself automatically but is, for now, sorted.)
Consider this unsorted list:

Ralph
William
Anthony

Where is the correct place to insert Thomas?

Aside from that little problem, you can lessThan() to compare strings lexicographically.