Question: Supose i have name `Mink,Mark,Aashis`. How do compare them and arrange them according to alphabetical order. `Collections.sort()` dont work for me. Here i should have results `Aashis,Mark and Mark`.

```
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", XMLfunctions.getValue(e, "name"));
                mylist.add(map);

                 Collections.sort( mylist, new Comparator<HashMap<String,String>>(){                    

                    public int compare(HashMap<String, String> lhs,
                            HashMap<String, String> rhs) {
                            //how do i compare string name
                        return 0;

                    }
                 });

```

Answer: 
To put this into context, in many OO languages, objects are compared by their *identity*. In pseudocode:

```
bar = new Foo
baz = new Foo

bar == baz  // false

```

Even though both objects are basically the same if you just look at their *values*, they're not considered to be identical, because they are separate instances. To demonstrate:

```
bar = new Foo
baz = bar

bar == baz  // true

```

Now:

> 
> In computer science, a value object is a small simple object, like money or a date range, whose equality isn't based on identity.
> 
> 
> <http://en.wikipedia.org/wiki/Value_object>
> 
> 
> 

This would be a demonstration of "value objects":

```
address1 = new Address('Main street 42')
address2 = new Address('Main street 42')

address1 == address2  // true

```

Because the values are the same, both objects are considered equal, even if they're separate instances.

PHP does not have a separate concept of "value objects", it only has one type of object. Its comparison operator can make that distinction though:

> 
> When using the comparison operator (==), object variables are compared in a simple manner, namely: Two object instances are equal if they have the same attributes and values, and are instances of the same class.
> 
> 
> <http://www.php.net/manual/en/language.oop5.object-comparison.php>
> 
> 
> 

E.g.:

```
$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');

$address1 == $address2;  // true     equal...
$address1 === $address2;  // false   ...but not identical

```
PHP used to have value objects but that was back in PHP4. See <http://3v4l.org/ghI8G>